Я использую PHP-скрипт Openx для запуска рекламных кампаний. Мы начали получать больше трафика, и сервер иногда становится нестабильным. Когда я проверяю верхнюю команду, я вижу, как работают httpd и PHP, затем на пару секунд процесс PHP останавливается, а затем снова там.
Проблема в медленном отклике. Страницы появляются очень медленно. Похоже, что сервер достигает предела чего-то в пиковое время. Пожалуйста, можете что-нибудь подсказать ?!
Сервер работает с: fcgi; Linux CentOS 5.5; Apache 2.2; PHP 5.2.9;
Я внес некоторые изменения в httpd.conf следующим образом
Timeout 10
TraceEnable On
ServerSignature Off
ServerTokens Full
FileETag All
StartServers 50
<IfModule prefork.c>
MinSpareServers 50
MaxSpareServers 100
</IfModule>
ServerLimit 512
MaxClients 512
MaxRequestsPerChild 50
KeepAlive On
KeepAliveTimeout 1
MaxKeepAliveRequests 500
Системная информация
Server load 0.83 (6 CPUs) Memory Used 6.08% (997296 of 16410212) Swap Used 0.00% (0 of 2096472) 1 0 0 4105112 324280 11092200 0 0 0 252 3336 7169 14 4 81 0 0 1 0 0 4098736 324280 11089104 0 0 0 240 3287 6792 13 4 83 0 0 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 4119496 324280 11082052 0 0 0 186 3221 6946 13 4 83 0 0 2 0 0 4122120 324280 11086072 0 0 0 242 3212 6904 13 4 83 0 0 2 0 0 4101952 324280 11085588 0 0 0 174 3442 6774 14 4 82 0 0 0 0 0 4078672 324280 11090232 0 0 0 224 3465 7558 15 4 80 0 0 5 0 0 4070644 324280 11100076 0 0 0 240 3603 7921 15 4 81 0 0 1 0 0 4105108 324280 11079192 0 0 0 535 3507 6977 13 4 83 0 0 1 0 0 4074172 324280 11095496 0 0 0 244 3280 6592 13 4 82 0 0 1 0 0 4067656 324280 11105696 0 0 0 190 3331 6654 12 4 85 0 0 1 0 0 4096528 324280 11093160 0 0 0 188 3068 5648 11 3 86 0 0 1 0 0 4099368 324280 11092972 0 0 0 174 3130 6325 12 4 84 0 0 1 0 0 4105312 324284 11091888 0 0 0 225 3397 7064 14 4 82 0 0 1 0 0 4101616 324284 11096192 0 0 0 234 3517 7039 14 4 82 0 0 3 0 0 4062576 324284 11103648 0 0 0 372 3547 7263 14 4 82 0 0 1 0 0 4080312 324284 11097940 0 0 0 243 3180 6623 13 4 83 0 0 6 0 0 4086780 324284 11102572 0 0 0 174 3254 6390 13 4 83 0 0 1 0 0 4110312 324284 11089576 0 0 0 181 3198 6403 13 4 83 0 0 0 0 0 4094080 324284 11099016 0 0 0 220 3141 6949 12 4 84 0 0 2 0 0 4095848 324284 11096992 0 0 0 226 3043 6483 13 4 83 0 0 0 0 0 4107396 324288 11086824 0 0 0 264 3250 6551 13 5 82 0 0 1 0 0 4103260 324288 11094204 0 0 0 364 3188 6066 12 4 84 0 0 0 0 0 4112904 324288 11095512 0 0 0 179 3155 6355 12 4 84 0 0 1 0 0 4118736 324288 11098424 0 0 0 241 2929 5381 11 3 86 0 0 1 0 0 4121464 324292 11089684 0 0 0 213 3076 5939 11 4 85 0 0 0 0 0 4109180 324292 11103712 0 0 0 274 3076 6172 14 4 82 0 0 1 0 0 4103344 324292 11107400 0 0 0 182 3186 6301 12 3 84 0 0 2 0 0 4112200 324292 11100828 0 0 0 184 3234 6435 13 4 83 0 0 1 0 0 4140368 324292 11087284 0 0 0 345 2944 5851 10 3 86 0 0 2 0 0 4135768 324292 11082848 0 0 0 219 3390 6779 13 4 83 0 0 1 0 0 4109100 324292 11099612 0 0 0 237 3086 6635 13 4 83 0 0 2 0 0 4119308 324292 11089632 0 0 0 197 3203 6504 13 4 83 0 0 2 0 0 4103316 324292 11089996 0 0 0 212 3322 6576 13 4 83 0 0 2 0 0 4085044 324292 11103768 0 0 0 239 3313 6924 13 4 83 0 0 2 0 0 4099672 324292 11100764 0 0 0 226 3063 6233 12 4 84 0 0 0 0 0 4126776 324292 11088080 0 0 0 289 3361 6555 13 4 84 0 0 2 0 0 4104824 324292 11090908 0 0 0 231 3228 7022 14 4 82 0 0 0 0 0 4099456 324296 11096684 0 0 0 224 2936 5995 12 3 85 0 0 0 0 0 4117268 324296 11087676 0 0 0 228 3220 6257 11 4 85 0 0 2 0 0 4104404 324296 11098316 0 0 0 234 3347 6693 12 4 84 0 0 2 0 0 4088440 324296 11106628 0 0 0 228 3379 7079 14 4 82 0 0 2 0 0 4104672 324300 11103368 0 0 0 185 3012 5821 12 3 85 0 0 0 0 0 4108812 324300 11104884 0 0 0 268 3172 6914 14 4 82 0 0
Под "fcgi" вы имеете в виду mod_fastcgi
или mod_fcgid
? Если вы используете mod_fcgid
, вы используете сценарий оболочки из документации apache или, по крайней мере, устанавливаете необходимые переменные среды в apache? Если есть несоответствие конфигурации между mod_fcgid и PHP, тогда исполняемый файл php выйдет, когда apache не будет готов к его завершению, что, похоже, именно то, что вы говорите, когда говорите
Когда я проверяю верхнюю команду, я вижу, как работают httpd и php, а затем на пару секунд останавливается процесс php, а затем снова там.
Еще одна вещь с mod_fcgid, которая должна быть правильно настроена в PHP, - это то, что дочерние элементы PHP должны быть отключены, поскольку mod_fcgid ожидает обрабатывать все порождения процесса самостоятельно. Увидеть Информация о PHP в документации для примера сценария оболочки и конфигурации.
Извините, я не ответил, но позвольте дать вам совет. OpenX сам по себе является проблемой. Вам следует избегать этого.
Он такой раздутый, я не могу в это поверить. Я только что скачала еще раз, чтобы перепроверить. 45 Мб, черт возьми, только для интерфейса администратора и скрипта, который обслуживает рекламу? Ни за что.
Относительно недавно у меня был неприятный опыт использования его в течение некоторого времени на реальном сайте с умеренной посещаемостью. Это медленно. Сценарий обслуживания выдает ошибки и предупреждения, хотя настроен в соответствии с руководством, и все это работает только по волшебству. Например, мне приходилось запускать обслуживание несколько раз подряд, если я хотел принудительно перестроить кеш рекламы (в интерфейсе администратора сказано, что реклама обновляется сразу после сохранения настроек, если я правильно помню, а это не так '' т работать). Половина расширенных настроек в админке тоже не работает.
Как разработчик, я должен заметить, что они используют MDB2 lib для запроса к базе данных. Я видел тесты - это одна из самых медленных библиотек PHP DB. И они свернули свою собственную иерархию классов поверх нее. Я очень надеюсь, что они используют этот жирный бутерброд только в интерфейсе администратора, а не при показе рекламы.
Было время, когда это было довольно прилично, тогда это называлось что-то вроде MaxAds. Больше не надо.
Боюсь, вы не даете нам здесь много информации. Вам нужно найти узкое место, и для этого вам понадобятся данные. Есть ли у вас надлежащая система мониторинга, собирающая статистику о том, как работают ваши процессы и сколько ресурсов вы используете?
Сколько оперативной памяти и / или подкачки диска вы используете? Можете ли вы вставить вывод vmstat 5
когда и система работает нормально, а когда тормозит?
Одна очень простая и легкая в установке система мониторинга - это «sar». В системе Debian или Ubuntu его можно установить с помощью apt-get install sysstat
. Затем через несколько минут вы можете запустить sar -A
чтобы увидеть собранные данные.
При этом Google показывает множество веб-сайтов с информацией о настройка производительности openx. Они могут помочь.
Но если вы действительно хотите знать, что происходит, вы можете некоторое время посмотреть на запросы MySQL. Например, выполните запрос «показать список процессов» или «показать полный список процессов» серверу MySQL и повторяйте его до тех пор, пока не увидите запрос, который выполняется дольше, чем разумно. Если вам повезло с вашими собственными приложениями, запрос, вероятно, будет одним из запросов OpenX.
Другой альтернативой является просмотр журнала медленных запросов MySQL. Вам придется самостоятельно определить расположение файла журнала, поскольку я не знаком с его обычной настройкой. Это может быть упомянуто в руководстве MySQL.
KeepAlive Off MaxKeepAliveRequests 100 KeepAliveTimeout 5 MinSpareServers 15 MaxSpareServers 25 StartServers 10 MaxClients 150 MaxRequestsPerChild 0
Если вы все еще сталкиваетесь с проблемами, опубликуйте полный вывод 'top' 'free' и 'iostat'