Labutin
Новичок
У нас наблюдается странная проблема на Web-сервере.
Оборудование следующее
2 процессора Intel(R) Xeon(R) CPU E5520 @ 2.27GHz
12 GB памяти
У нас порядка 20 хитов в секунду. Из них 4-5 – это тяжелые поисковые запросы.
У нас nginx + php-fpm (5.3.22)
MySQL сервер установлен на втором сервере.
В 99% времени у нас Load Average меньше 10 и нагрузка на процессорах около 50%. Сайт работает стабильно и относительно быстро.
Но в произвольный момент нагрузка на процессоры вырастает мгновенно под 100% и начинает ползти вверх Load Average. Сайт начинает тормозить.
Единственный выход из проблемной ситуации –это релоад php-fpm ( /etc/init.d/php-fpm reload )
Такое случает насколько раз в день. У нас есть монитор, который следит на Load Average и автоматом рестартует php-fpm – эдакий костыль.
Решил использовать strace для изучения проблемы.
Прошу прощения за длинные логи. Ниже приведены выводы команды strace -cp PID
PID – это случайно выбранный процесс php-fpm (запущено их порядка 100).
Вот вывод трассировки двух процессов именно в тот момент, когда мы имеем проблему.
Да, наш скрипт много читает - это нормально
Почему munmap работает так долго??!! И я много разных процессов цеплял strace’ом и ВСЕГДА в топе именно munmap!!!
Для сравнения приведу вывод strace в момент штатного функционирования сервера.
И видно, что munmap отрабатывает как надо.
Какие версии мы проверили:
- вдруг на сервер приходит больше запросов
- сервер начинает свопиться
- на сервере появляется дополнительный трафик
- запускаются долго работающие скрипты
Ответ на все эти версии – «НЕТ».
В чем может быть проблема?
[root@hp-php ~]# uname -a
Linux hp-php 2.6.18-348.3.1.el5.centos.plusPAE #1 SMP Mon Mar 11 20:38:49 EDT 2013 i686 i686 i386 GNU/Linux
Оборудование следующее
2 процессора Intel(R) Xeon(R) CPU E5520 @ 2.27GHz
12 GB памяти
У нас порядка 20 хитов в секунду. Из них 4-5 – это тяжелые поисковые запросы.
У нас nginx + php-fpm (5.3.22)
MySQL сервер установлен на втором сервере.
В 99% времени у нас Load Average меньше 10 и нагрузка на процессорах около 50%. Сайт работает стабильно и относительно быстро.
Но в произвольный момент нагрузка на процессоры вырастает мгновенно под 100% и начинает ползти вверх Load Average. Сайт начинает тормозить.
Единственный выход из проблемной ситуации –это релоад php-fpm ( /etc/init.d/php-fpm reload )
Такое случает насколько раз в день. У нас есть монитор, который следит на Load Average и автоматом рестартует php-fpm – эдакий костыль.
Решил использовать strace для изучения проблемы.
Прошу прощения за длинные логи. Ниже приведены выводы команды strace -cp PID
PID – это случайно выбранный процесс php-fpm (запущено их порядка 100).
Вот вывод трассировки двух процессов именно в тот момент, когда мы имеем проблему.
PHP:
Process 17272 attached - interrupt to quit
Process 17272 detached
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
65.56 0.008817 267 33 munmap
13.38 0.001799 900 2 clone
9.66 0.001299 2 589 read
7.43 0.000999 125 8 mremap
2.84 0.000382 1 559 96 access
0.59 0.000080 40 2 waitpid
0.29 0.000039 0 627 gettimeofday
0.16 0.000022 0 346 write
0.04 0.000006 0 56 getcwd
0.04 0.000005 0 348 poll
0.00 0.000000 0 55 open
[root@hp-php ~]# strace -cp 30767
Process 30767 attached - interrupt to quit
Process 30767 detached
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
52.88 0.016926 220 77 munmap
29.06 0.009301 2 4343 read
8.73 0.002794 466 6 clone
3.59 0.001149 0 5598 time
3.18 0.001017 0 3745 write
1.12 0.000358 0 7316 gettimeofday
0.64 0.000205 1 164 fcntl64
0.39 0.000124 21 6 waitpid
0.22 0.000070 0 1496 326 access
0.13 0.000041 0 3769 poll
0.03 0.000009 0 151 close
0.02 0.000008 0 114 clock_gettime
0.02 0.000007 0 110 getcwd
0.00 0.000000 0 112 open
0.00 0.000000 0 38 chdir
0.00 0.000000 0 47 lseek
0.00 0.000000 0 6 pipe
Почему munmap работает так долго??!! И я много разных процессов цеплял strace’ом и ВСЕГДА в топе именно munmap!!!
Для сравнения приведу вывод strace в момент штатного функционирования сервера.
PHP:
Process 28606 attached - interrupt to quit
Process 28606 detached
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
45.72 0.001816 1 2601 read
32.88 0.001306 435 3 clone
9.19 0.000365 0 2175 write
6.95 0.000276 0 7521 time
2.24 0.000089 0 4158 gettimeofday
2.01 0.000080 1 114 brk
0.28 0.000011 0 2166 poll
0.20 0.000008 0 833 155 access
0.20 0.000008 0 53 recv
0.18 0.000007 2 3 waitpid
0.15 0.000006 0 18 munlock
0.00 0.000000 0 69 open
0.00 0.000000 0 96 close
0.00 0.000000 0 29 chdir
0.00 0.000000 0 36 lseek
0.00 0.000000 0 3 pipe
0.00 0.000000 0 29 times
0.00 0.000000 0 10 getrusage
0.00 0.000000 0 5 munmap
0.00 0.000000 0 1 ftruncate
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
54.81 0.002366 1 1717 read
26.41 0.001140 1 1696 poll
8.29 0.000358 0 1662 write
7.37 0.000318 2 131 121 stat64
1.53 0.000066 0 3249 gettimeofday
1.18 0.000051 0 746 525 access
0.23 0.000010 0 27 fcntl64
0.19 0.000008 0 62 brk
0.00 0.000000 0 1 restart_syscall
0.00 0.000000 0 7 open
0.00 0.000000 0 16 close
0.00 0.000000 0 3 chdir
0.00 0.000000 0 1039 time
0.00 0.000000 0 1 lseek
0.00 0.000000 0 3 times
0.00 0.000000 0 3 ioctl
0.00 0.000000 0 1 getrusage
0.00 0.000000 0 4 munmap
0.00 0.000000 0 3 setitimer
0.00 0.000000 0 1 sigreturn
0.00 0.000000 0 1 flock
Какие версии мы проверили:
- вдруг на сервер приходит больше запросов
- сервер начинает свопиться
- на сервере появляется дополнительный трафик
- запускаются долго работающие скрипты
Ответ на все эти версии – «НЕТ».
В чем может быть проблема?
[root@hp-php ~]# uname -a
Linux hp-php 2.6.18-348.3.1.el5.centos.plusPAE #1 SMP Mon Mar 11 20:38:49 EDT 2013 i686 i686 i386 GNU/Linux