Я недавно обновил свой Magento с 1.5 до 1.9, и когда я добавляю определенный продукт в корзину, я начинаю получать эту ошибку: 502 Неверный шлюз
В журнале не было записей var / log / папка:
Итак, я взглянул на свои ошибки nginx и нашел следующие записи в nginx-errors.log:
2015/04/09 10:58:03 [error] 15208#0: *3 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 46.xxx.xxx.xxx, server: dev.my-domain.co.uk, request: "POST /checkout/cart/add/uenc/aHR0cDovL2Rldi5zYWx2ZW8uY28udWsvdGludGktYmF0aC1wYWludGluZy1zb2FwLTcwbWwuaHRtbD9fX19TSUQ9VQ,,/product/15066/form_key/eYLc3lQ35BSrk6Pa/ HTTP/1.1", upstream: "fastcgi://unix:/var/run/php-fcgi-www-data.sock:", host: "dev.my-domain.co.uk", referrer: "http://dev.my-domain.co.uk/tinti-bath-painting-soap-70ml.html"
2015/04/09 11:04:42 [error] 15208#0: *13 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 46.xxx.xxx.xxx, server: dev.my-domain.co.uk, request: "POST /checkout/cart/add/uenc/aHR0cDovL2Rldi5zYWx2ZW8uY28udWsvdGludGktYmF0aC1wYWludGluZy1zb2FwLTcwbWwuaHRtbD9fX19TSUQ9VQ,,/product/15066/form_key/eYLc3lQ35BSrk6Pa/ HTTP/1.1", upstream: "fastcgi://unix:/var/run/php-fcgi-www-data.sock:", host: "dev.my-domain.co.uk", referrer: "http://dev.my-domain.co.uk/tinti-bath-painting-soap-70ml.html"
2015/04/09 11:05:03 [error] 15208#0: *16 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 46.xxx.xxx.xxx, server: dev.my-domain.co.uk, request: "POST /checkout/cart/add/uenc/aHR0cDovL2Rldi5zYWx2ZW8uY28udWsvdGludGktYmF0aC1wYWludGluZy1zb2FwLTcwbWwuaHRtbD9fX19TSUQ9VQ,,/product/15066/form_key/eYLc3lQ35BSrk6Pa/ HTTP/1.1", upstream: "fastcgi://unix:/var/run/php-fcgi-www-data.sock:", host: "dev.my-domain.co.uk", referrer: "http://dev.my-domain.co.uk/tinti-bath-painting-soap-70ml.html"
2015/04/09 11:12:07 [error] 15273#0: *1 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 46.xxx.xxx.xxx, server: dev.my-domain.co.uk, request: "POST /checkout/cart/add/uenc/aHR0cDovL2Rldi5zYWx2ZW8uY28udWsvdGludGktYmF0aC1wYWludGluZy1zb2FwLTcwbWwuaHRtbD9fX19TSUQ9VQ,,/product/15066/form_key/eYLc3lQ35BSrk6Pa/ HTTP/1.1", upstream: "fastcgi://unix:/var/run/php-fcgi-www-data.sock:", host: "dev.my-domain.co.uk", referrer: "http://dev.my-domain.co.uk/tinti-bath-painting-soap-70ml.html"
Я установил magento на собственный стек LEMP, вот конфигурации:
Эта ошибка возникает только тогда, когда я добавляю определенный продукт в корзину в моем обновленном Magento, и каждый раз, когда возникает ошибка, я вижу core.XXXXX файл (примерно 350 МБ) в public_html папка.
Есть идеи, почему мой php-fpm так падает? Как найти причину и исправить?
Вот последние записи на моем сервере Linux (CentOS), когда я запускаю dmesg команда:
php-fpm[14862]: segfault at 7fff38236ff8 ip 00000000005c02ba sp 00007fff38237000 error 6 in php-fpm[400000+325000]
php-fpm[15022]: segfault at 7fff38351ff0 ip 00000000005bf6e5 sp 00007fff38351fb0 error 6 in php-fpm[400000+325000]
php-fpm[15021]: segfault at 7fff38351ff0 ip 00000000005bf6e5 sp 00007fff38351fb0 error 6 in php-fpm[400000+325000]
php-fpm[15156]: segfault at 7fff38351ff0 ip 00000000005bf6e5 sp 00007fff38351fb0 error 6 in php-fpm[400000+325000]
php-fpm[15024]: segfault at 7fff38351ff0 ip 00000000005bf6e5 sp 00007fff38351fb0 error 6 in php-fpm[400000+325000]
php-fpm[15223]: segfault at 7fff8d1d5fd8 ip 00000000005c02ba sp 00007fff8d1d5fe0 error 6 in php-fpm[400000+325000]
php-fpm[15222]: segfault at 7fff8d1d5fd8 ip 00000000005c02ba sp 00007fff8d1d5fe0 error 6 in php-fpm[400000+325000]
php-fpm[15225]: segfault at 7fff8d1d5fd8 ip 00000000005c02ba sp 00007fff8d1d5fe0 error 6 in php-fpm[400000+325000]
php-fpm[15227]: segfault at 7fff8d1d5fd8 ip 00000000005c02ba sp 00007fff8d1d5fe0 error 6 in php-fpm[400000+325000]
php-fpm[15362]: segfault at 7fff3118afd0 ip 00000000005c0ace sp 00007fff3118afa0 error 6 in php-fpm[400000+325000]
Я проанализировал дамп ядра с помощью gdb, и вот что я вижу для первых двух кадров: http://pastebin.com/raw.php?i=aPvB1sWv (не имеет для меня особого смысла) ...
Такие ошибки обычно возникают, когда на сервере заканчиваются ресурсы, при условии, что вы используете самые последние стабильные версии `php5-fpm:
php5-fpm
имеет достаточно памяти (нет oom-killer
убивая процесс)Обязательно проверьте лимиты открытых файлов на сервере. Вас особенно интересует жесткий предел (-Hn
):
$ ulimit -Hn
4096
$ ulimit -Sn
1024
Проверить количество открытых файловых дескрипторов на сервере:
sysctl fs.file-nr
fs.file-nr = 1440 0 790328
Современные серверы способны обрабатывать множество файлов, обычно ulimits
установлены на ненужные низкие значения.
Тогда проверьте nginx.conf
, в начале есть что-то вроде:
worker_processes 4;
events {
worker_connections 1024;
}
Если вы проксируете запрос для каждого соединения, вам понадобятся 2 дескриптора файлов. Это означает, что в случае большого количества подключений вы довольно быстро достигнете лимита.
nginx имеет worker_rlimit_nofile
директива для ограничения открытых файлов для каждого рабочего процесса (директива верхнего уровня, например worker_processes 4;
):
worker_rlimit_nofile 1024;
Просто посчитайте и посчитайте, сколько открытых дескрипторов файлов вам понадобится при использовании всех соединений (немного крайний случай). Также рассмотрите все другие службы, работающие на этом сервере. когда