Intereting Posts
Продолжить вывод MYSQL в PHP mysqli: может ли он подготовить несколько запросов в одном выражении? хэш-файлы css и js, чтобы разбить кеш. Это медленно? Вставка в базу данных с использованием функции onclick Я получаю неожиданную ошибку T_VARIABLE, когда я открываю приложение facebook с этим кодом. Пожалуйста, сделайте этот код правильным php аутентификации пользователей / фреймворков … какие варианты? Обмен данными сеанса между рельсами и wordpress Получить определенный элемент из каждого вспомогательного массива Должен ли я преобразовать сохраненный Markdown в HTML или просто сохранить HTML? Facebook PHP SDK 4.0: получение долгосрочного маркера доступа mysqli_real_escape_string И подготовленные операторы? Codeigniter с использованием базы данных доступа ms Как использовать собственные PHP-переменные в шаблоне WordPress? принудительное скачивание файла Изгиб изображения с помощью PHP или HTML5

Случайный PHP FastCGI / Сброс соединения с помощью одноранговых / неполных заголовков

У меня были случайные 500 Internal Server ошибок 500 Internal Server на моих сайтах на основе PHP / MySQL на разных общих хостах. Я использую PHP 5.2.17 через CGI / FastCGI на общем сервере Linux. Когда я смотрю в журналы, я вижу следующее:

 [error] [client 75.71.176.224] (104)Connection reset by peer: FastCGI: comm with server "/dev/shm/blackmou-php.fcgi" aborted: read failed, referer: ... [error] [client 75.71.176.224] FastCGI: incomplete headers (0 bytes) received from server "/dev/shm/blackmou-php.fcgi", referer: ... [error] [client 75.71.176.224] (104)Connection reset by peer: FastCGI: comm with server "/dev/shm/blackmou-php.fcgi" aborted: read failed, referer: ... [error] [client 75.71.176.224] FastCGI: incomplete headers (0 bytes) received from server "/dev/shm/blackmou-php.fcgi", referer: ... 

Кто-нибудь знает, как это решить?

Эта проблема, как правило, не только специфична для узла, но и зависит от разработчика, в зависимости от конфигурации. Однако некоторые хосты довольно строгие с FastCGI и ограничивают ваши возможности. Как правило, проще запускать без использования FastCGI и просто использовать mod_php, если у вас нет необходимости использовать FastCGI в вашем приложении.

Нам нужно будет увидеть вашу обертку fcgi (что находится в /dev/shm/blackmou-php.fcgi) или .htaccess для нереста FastCGI, чтобы лучше помочь вам, не зная, какие файлы и код, который есть в тех файлах, с которыми возникает проблема. Также используют ли ваши хосты Apache, LightHttpd или Nginx (или комбинацию)? В этот момент я настоятельно рекомендую обновить, чтобы использовать PHP 5.3.9+

Поскольку это может быть вызвано любым количеством проблем, FastCGI эффективно предотвращает атаку вашего сайта / скриптов путем отказа в обслуживании или сбоя из-за утечек памяти и т. Д. (EG: пытается обрабатывать 80 000 подключений, просто снижая и ограничивая число запросов или застревание в бесконечном цикле путем тайминга и завершения процесса)

Эта ошибка, в частности, вызвана, как правило, idle_timeout (30 секунд по умолчанию) или максимальным количеством дочерних процессов. Это также может быть вызвано тем, кто запускает длинный сценарий и закрывает свой браузер / соединение до завершения скрипта.

FastCGI запускает свою оболочку процесса, выполняет команду, время до завершения процесса, соединение рассматривается как сброс одноранговым узлом.

Другим примером является то, что максимальные дети (maxProcesses) достигнуты (EG: на многих сайтах показано 2 или 4 в качестве примера, когда на самом деле вам может понадобиться 20 или 50 в зависимости от среднего трафика). Если все дети в настоящее время активны и дополнительный запрос / соединение ограничено maxProcesses, на которое FastCGI не будет делить активных дочерних элементов, поэтому он должен сначала либо завершить процесс, либо запустить новый дочерний процесс, либо отказаться от запроса, в зависимости от ваших конфигураций.

Вот еще информация о настройках:

http://www.fastcgi.com/mod_fastcgi/docs/mod_fastcgi.html

http://www.fastcgi.com/drupal/node/10

Пример упаковки

 PHP_FCGI_CHILDREN=0 #no limit export PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS=10000 export PHP_FCGI_MAX_REQUESTS 

ОБНОВИТЬ

Чтобы добавить к этому, это также может быть вызвано ограничением памяти php

Если вышеуказанное не решит вашу проблему, обновите php.ini, чтобы увеличить memory_limit

для тех, кто ищет дополнительную информацию:

в моем случае возникла проблема с кодом. При входящем HTTP-запросе из внутреннего кода делался вызов внутреннего URL-адреса, создавая тем самым тупиковую ситуацию.

Это привело к зависанию процессов PHP и привело сервер к работе. мы использовали file_get_contents ('URL') или cURL () в нашей функции обратного вызова. Затем мы заменили его простой функцией drupal, которая предоставила нам значения из БД.

Инструмент NewRelic помог мне определить функцию, на которую уходило много времени, чтобы ответить.

Другим способом определить это было бы сделать drupal_watchdog для нашей функции обратного вызова и проверить журналы, когда сервер разбился.

надеюсь это поможет.