APC on windows iis 7.0 unstable

2019-03-01 11:55发布

问题:

I've very unstable IIS, as it always get restarted for some reason it is APC related.

The specs of the server is below

Intel R Xeon  CPU 3GHZ 3GHZ
2GB RAM
64bit

APC & Server specification

3.1.7-dev 
PHP Version 5.3.6 
APC Host localhost 
Server Software Microsoft-IIS/7.5 
Shared Memory 1 Segment(s) with 1024.0 MBytes 
(IPC shared memory, File Locks locking)  



extension=php_apc.dll
apc.shm_size=1024M
apc.num_files_hint=10000
apc.user_entries_hint=10000
apc.max_file_size=5M

PHP LOG File On Error

28-Jul-2011 09:23:14] PHP Fatal error:  Unknown: apc_fcntl_lock failed errno:6 in Unknown on line 0
[28-Jul-2011 09:23:14] PHP Fatal error:  Unknown: apc_fcntl_lock failed errno:6 in Unknown on line 0
[28-Jul-2011 09:24:23] PHP Notice:  Undefined index: SERVER_ADDR in C:\inetpub\wwwroot\apc.php on line 68
[28-Jul-2011 09:24:24] PHP Notice:  Undefined index: SERVER_ADDR in C:\inetpub\wwwroot\apc.php on line 68
[28-Jul-2011 09:24:24] PHP Warning:  date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'UTC' for '8.0/no DST' instead in C:\inetpub\wwwroot\apc.php on line 1122
[28-Jul-2011 09:24:24] PHP Warning:  date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'UTC' for '8.0/no DST' instead in C:\inetpub\wwwroot\apc.php on line 1123
[28-Jul-2011 09:24:24] PHP Warning:  date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'UTC' for '8.0/no DST' instead in C:\inetpub\wwwroot\apc.php on line 1124
[28-Jul-2011 09:24:30] PHP Notice:  Undefined index: SERVER_ADDR in C:\inetpub\wwwroot\apc.php on line 68
[28-Jul-2011 09:24:30]

I cannot figure out what's the error that is causing IIS to restart or what is causing apc_fcntl_lock failed errno:6 . My project stores up to 1gb cache data and hence explains the shm set at 1024M

Also problem seems to happen more often when i reload apc.php page on browser HTTP Error 500.0 - Internal Server Error C:\PHP\php-cgi.exe - The FastCGI process exited unexpectedly

My cache gets reset and i've to re-cached my data again.

It works fine with my LINUX Server. Is is something wrong with my APC configuration or such?

回答1:

I don't think it's a problem with your APC configuration per se, but more likely a problem with the way that file locking is handled on Windows. I looked up the apc_fcntl_lock in the APC source code, and it's pretty straightforward and hasn't been changed for months.

If you're only running one worker process, you might try setting apc.write_lock = 0 and see if that helps.

Otherwise, you might try an older version of PHP (or either 5.3.7RC3) in case the problem is with the way APC is interacting with PHP (probably unlikely, though).

Finally, if that doesn't work, maybe try a different opcode cache; xcache for instance.