Процессы mod_fcgid и время жизни XCache
Я использую mod_fcgid и Xcache 3.0.3, PHP 5.4.18. Я знаю, что из-за дизайна mod_fcgid я не могу использовать общую разделяемую память, поэтому каждый процесс php-cgi использует свой собственный кеш в течение своего времени жизни.
Когда я открою top
и проверить на php-cgi
процессы я вижу это:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
14827 examplecom 20 0 230m 34m 18m S 11.0 3.4 0:07.07 php-cgi
14840 examplecom 20 0 242m 45m 18m S 0.7 4.6 0:02.74 php-cgi
14802 examplecom 20 0 237m 41m 18m S 6.3 4.2 0:11.39 php-cgi
14816 examplecom 20 0 232m 36m 18m S 1.7 3.7 0:07.75 php-cgi
14824 examplecom 20 0 231m 34m 18m S 8.6 3.5 0:06.12 php-cgi
14838 examplecom 20 0 229m 33m 17m S 0.7 3.3 0:00.89 php-cgi
14841 examplecom 20 0 228m 32m 18m S 2.0 3.3 0:01.71 php-cgi
14839 examplecom 20 0 228m 32m 18m R 8.6 3.2 0:01.58 php-cgi
Затем я проверяю админ-панель XCache. Каждый раз, когда я обновляю страницу администратора, я вижу данные другого процесса. Например, я вижу, что:
XCache Cacher
XCache Cacher Module enabled
Readonly Protection disabled
Page Request Time 2013-09-04 21:59:32
Cache Init Time 2013-09-04 21:59:05
Cache Instance Id 14827
Opcode Cache enabled, 12,582,912 bytes, 1 split(s), with 8192 slots each
Variable Cache enabled, 1,048,576 bytes, 1 split(s), with 8192 slots each
Shared Memory Schemes mmap
Похоже процесс 14827
живет 27 секунд Но когда я проверяю top
этот процесс работает для 0:07.07.
Так же как и PID 14827
живет 7 минут или 27 секунд. Что является правильным, или я что-то упускаю из-за внутренней работы XCache?
Это лучший вариант, чтобы изменить /etc/httpd/conf.d/fcgid.conf
и продлить срок службы каждого процесса? Или это плохая идея изменить значения по умолчанию.
Какую оптимизацию я могу сделать больше, чтобы сделать XCache
а также mod_fgid
работать лучше? (Я не предпочитаю менять свой сервер на nginx и переходить на mod_fastcgi)
1 ответ
Я не знаю XCache, но...
скажем у нас есть 1 процесс Apache 3 процесса PHP
все 3 процесса php запущены. Все 3 имеют одинаковое "время работы". // время сейчас 0000
Вы запрашиваете некоторую страницу. Apache подключается к процессу № 1, кеш инициирован. // время инициализации кэша 0001
Вы обновляете страницу. Apache подключается к процессу № 2, кеш инициируется. // время инициализации кэша 0033
Теперь у вас есть 3 процесса, все 3 работают с момента времени 0000, но
процесс № 1 имеет initCacheTime 0001
процесс №2 имеет initCacheTime 0033
Процесс № 3 не имеет initCacheTime, потому что он еще не используется.