- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Как снизить ДРР до 4,38% и повысить продажи с помощью VK Рекламы
Для интернет-магазина инженерных систем
Мария Лосева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
да, я так и подумал, там очень сложная система, с shm/sem/flock (mysql нет)
возможно все процессы ждут один процесс который блокирует общую ячейку памяти (читает или пишет), что самое странное, это бывает редко (
вообщем буду наблюдать и тестить )
Удалось отловить процесс php-cgi потреблющий 99%CPU (при нормальной работе их нет) и в тот момент когда он что-то делает (после чего частенько все php процессы не принимают новые соединения) выполнить strace и lsof
Вот такие результаты, но мне они не очём не говорят 🙅
наверное интересный strace должен быть до этого момента (
несколько секунд ничего не выводится кроме первой строки, потом это начиная с SIGPROF:
Process 3460 attached - interrupt to quit
--- SIGPROF (Profiling timer expired) @ 0 (0) ---
setitimer(ITIMER_PROF, {it_interval={0, 0}, it_value={30, 0}}, NULL) = 0
rt_sigaction(SIGPROF, {0x82b3ad0, [PROF], SA_RESTART}, {0x82b3ad0, [PROF], SA_RE START}, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [PROF], NULL, 8) = 0
close(6) = 0
fcntl64(3, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=0, len=1}) = 0
fcntl64(3, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=0, len=1}) = 0
write(5, "\1\6\0\1\0\r\3\0 \0\0\0", 24) = -1 EPIPE (Broken pipe)
--- SIGPIPE (Broken pipe) @ 0 (0) ---
munmap(0xb373c000, 266240) = 0
munmap(0xb377d000, 266240) = 0
munmap(0xb37be000, 528384) = 0
munmap(0xb78e9000, 266240) = 0
mmap2(NULL, 266240, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x b78e9000
setitimer(ITIMER_PROF, {it_interval={0, 0}, it_value={0, 0}}, NULL) = 0
write(5, "\1\6\0\1\0\r\3\0 \0\0\0\1\3\0\1\0\10\0\0"..., 40) = -1 EPI PE (Broken pipe)
--- SIGPIPE (Broken pipe) @ 0 (0) ---
shutdown(5, 1 /* send */) = 0
recv(5, "\1\5\0\1\0\0\0\0", 8, 0) = 8
recv(5, "", 8, 0) = 0
close(5) = 0
accept(4, <unfinished ...>
и lsof для подобного процесса
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
php-cgi 3458 wwwrun cwd DIR 8,1 110592 7110665 /home/web/html
php-cgi 3458 wwwrun rtd DIR 8,1 4096 2 /
php-cgi 3458 wwwrun txt REG 8,1 14141558 2475330 /usr/local/bin/php-cgi
php-cgi 3458 wwwrun mem REG 0,0 0 [heap] (stat: No such file or directory)
php-cgi 3458 wwwrun mem REG 8,1 17840 38682949 /lib/tls/i686/cmov/libnss_dns-2.3.6.so
php-cgi 3458 wwwrun mem REG 8,1 549984 2458197 /usr/lib/locale/locale-archive
php-cgi 3458 wwwrun DEL REG 0,8 414112460 /dev/zero
php-cgi 3458 wwwrun mem REG 8,1 38372 38682950 /lib/tls/i686/cmov/libnss_files-2.3.6.so
php-cgi 3458 wwwrun mem REG 8,1 339330 46072457 /root/conf/php/xcache.so
php-cgi 3458 wwwrun mem REG 8,1 14504 2458347 /usr/lib/libkrb5support.so.0.0
php-cgi 3458 wwwrun mem REG 8,1 89370 38682955 /lib/tls/i686/cmov/libpthread-2.3.6.so
php-cgi 3458 wwwrun mem REG 8,1 1241392 38682941 /lib/tls/i686/cmov/libc-2.3.6.so
php-cgi 3458 wwwrun mem REG 8,1 1147196 2458454 /usr/lib/libxml2.so.2.6.27
php-cgi 3458 wwwrun mem REG 8,1 5820 38682633 /lib/libcom_err.so.2.1
php-cgi 3458 wwwrun mem REG 8,1 151252 2458344 /usr/lib/libk5crypto.so.3.0
php-cgi 3458 wwwrun mem REG 8,1 508328 2458346 /usr/lib/libkrb5.so.3.2
php-cgi 3458 wwwrun mem REG 8,1 111708 2458343 /usr/lib/libgssapi_krb5.so.2.2
php-cgi 3458 wwwrun mem REG 8,1 76548 38682947 /lib/tls/i686/cmov/libnsl-2.3.6.so
php-cgi 3458 wwwrun mem REG 8,1 9592 38682944 /lib/tls/i686/cmov/libdl-2.3.6.so
php-cgi 3458 wwwrun mem REG 8,1 145136 38682945 /lib/tls/i686/cmov/libm-2.3.6.so
php-cgi 3458 wwwrun mem REG 8,1 67364 38682956 /lib/tls/i686/cmov/libresolv-2.3.6.so
php-cgi 3458 wwwrun mem REG 8,1 127488 2458426 /usr/lib/libjpeg.so.62.0.0
php-cgi 3458 wwwrun mem REG 8,1 137760 2458443 /usr/lib/libpng12.so.0.15.0
php-cgi 3458 wwwrun mem REG 8,1 29700 38682640 /lib/libpam.so.0.79
php-cgi 3458 wwwrun mem REG 8,1 1270520 2458191 /usr/lib/i686/cmov/libcrypto.so.0.9.8
php-cgi 3458 wwwrun mem REG 8,1 253120 2458192 /usr/lib/i686/cmov/libssl.so.0.9.8
php-cgi 3458 wwwrun mem REG 8,1 30612 38682957 /lib/tls/i686/cmov/librt-2.3.6.so
php-cgi 3458 wwwrun mem REG 8,1 78500 2458925 /usr/lib/libz.so.1.2.3
php-cgi 3458 wwwrun mem REG 8,1 772960 2458209 /usr/lib/libc-client.so.2002edebian.1
php-cgi 3458 wwwrun mem REG 8,1 21868 38682943 /lib/tls/i686/cmov/libcrypt-2.3.6.so
php-cgi 3458 wwwrun mem REG 8,1 88164 38683040 /lib/ld-2.3.6.so
php-cgi 3458 wwwrun 0r CHR 1,3 304 /dev/null
php-cgi 3458 wwwrun 1w CHR 1,3 304 /dev/null
php-cgi 3458 wwwrun 2w CHR 1,3 304 /dev/null
php-cgi 3458 wwwrun 3u REG 8,1 0 3053919 /tmp/.xcache.1000.0.1804289383.lock (deleted)
php-cgi 3458 wwwrun 4u unix 0xedbf5200 414112462 /tmp/php-wwwrun.sock
php-cgi 3458 wwwrun 5u unix 0xe686a200 414312638 /tmp/php-wwwrun.sock
php-cgi 3458 wwwrun 6u sock 0,4 414312743 can't identify protocol
Какие выводы можно сделать?
не совсем понятно, что оно делает.
обломился на записи в fd 5:
write(5, "\1\6\0\1\0\r\3\0 \0\0\0", 24) = -1 EPIPE (Broken pipe)
в итоге сделал shutdown сокету.
fd 5 - это:
php-cgi 3458 wwwrun 5u unix 0xe686a200 414312638 /tmp/php-wwwrun.sock
и висит на accept с fd 4:
accept(4, <unfinished ...>
php-cgi 3458 wwwrun 4u unix 0xedbf5200 414112462 /tmp/php-wwwrun.sock
что делают другие процессы php?
вы запускаете с помощью встроенного fastcgi в php?
(как здесь, например, http://kovyrin.net/2006/05/30/nginx-php-fastcgi-howto/lang/ru/ ?)
да, пхп так и запускается.
проблема в том что трудно это всё выловить в реальном времени
strace ничего не выводит в тот момент когда активно используется процессор, а что было до этого момента никак не узнать, я ведь не могу знать когда будет очередная волна с такими зависаниями (
очень удивительная вещь, может месяц всё нормально работать, а потом не с того не с сего такие глюки раза 3 за день, и само проходит... сейчас хоть запустил скрипт который перезагружает пхп если он не реагирует!
Запускать strace на все процессы, писать логи, как зависнет, убить все strace и смотреть что там последнее в логах? =)
попробуйте php-fpm