Я веду небольшой блог Wordpress с местными новостями на CentOS 6, 64-битный VPS, 4 ГБ ОЗУ. В последнее время ежедневный рост посетителей сайта увеличился с 5 до 10-15 тысяч.
Сайт начал вылетать с 504 Gateway Timeout
.
Журнал ошибок показывает request failed: error reading the headers
ошибка.
Вот что показывает топ
Tasks: 65 total, 1 running, 64 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.1%us, 0.4%sy, 0.0%ni, 99.5%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 4194304k total, 217440k used, 3976864k free, 0k buffers
Swap: 4194304k total, 0k used, 4194304k free, 119688k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
850 root 20 0 461m 9984 7272 S 1.7 0.2 0:04.51 ispmgr
822 apache 20 0 97384 4560 1932 S 0.3 0.1 0:00.89 nginx
1 root 20 0 19236 1452 1216 S 0.0 0.0 0:00.02 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd/767
3 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khelper/767
129 root 16 -4 10644 568 296 S 0.0 0.0 0:00.00 udevd
495 root 20 0 181m 1464 1048 S 0.0 0.0 0:00.00 rsyslogd
508 named 20 0 315m 12m 2556 S 0.0 0.3 0:00.02 named
524 opendkim 20 0 87792 2256 1100 S 0.0 0.1 0:00.00 opendkim
537 root 20 0 66612 1228 512 S 0.0 0.0 0:00.00 sshd
544 root 20 0 22184 936 704 S 0.0 0.0 0:00.00 xinetd
578 root 20 0 11308 1476 1220 S 0.0 0.0 0:00.02 mysqld_safe
701 mysql 20 0 424m 19m 5968 S 0.0 0.5 0:00.23 mysqld
743 postgres 20 0 108m 6112 5028 S 0.0 0.1 0:00.69 postmaster
745 postgres 20 0 82444 1488 404 S 0.0 0.0 0:00.00 postmaster
747 postgres 20 0 108m 1888 804 S 0.0 0.0 0:00.05 postmaster
748 postgres 20 0 108m 1672 588 S 0.0 0.0 0:00.04 postmaster
749 postgres 20 0 108m 1936 752 S 0.0 0.0 0:00.00 postmaster
750 postgres 20 0 82584 1680 544 S 0.0 0.0 0:00.01 postmaster
759 root 20 0 19268 780 524 S 0.0 0.0 0:00.00 dovecot
Я полагаю, что это проблема с веб-сервером, но я понятия не имею, с чего мне начать поиск и какая будет хорошая конфигурация?
UPD. VPS использует nginx в качестве внешнего прокси для apache 2.2. Php работает как cgi. Максимальное время выполнения 80 сек.
Когда сайт работал нормально, top показывал несколько процессов httpd.
Вы можете значительно повысить производительность, избавившись от Apache. Обработайте PHP с помощью PHP-FPM и поместите восходящие потоки из nginx непосредственно в PHP FPM. Вам следует попробовать PHP 5.5 с включенным кешированием кода операции, а также использовать некоторые плагины кеширования для WP, такие как WP Super Cache.