500 Внутренняя ошибка сервера в зависимости от загруженных внешних файлов?

У меня есть внутренняя ошибка сервера 500, и, скорее всего, в моем случае я думаю, что моя проблема заключается в загрузке внешних файлов. В строке состояния я получил сообщение Waiting for available sockets... до того, как это произошло.

Я нашел эту информацию, когда я гуглил:

Истекло время кодирования PHP

Если ваш PHP-скрипт устанавливает внешние сетевые подключения, время ожидания подключения может истечь. Если будет предпринято слишком много попыток подключения и время ожидания истекло, это вызовет «Внутреннюю ошибку сервера 500». Чтобы предотвратить эти тайм-ауты и ошибки, вы должны убедиться, что скрипты PHP закодированы с некоторыми правилами тайм-аута. Однако, как правило, обнаружение ошибки тайм-аута при подключении к базе данных или внешнему удаленному ресурсу (например, RSS-каналам) затруднено. Они, по сути, приостанавливают выполнение скрипта.

Удаление любых внешних подключений может повысить как производительность вашего веб-сайта, так и снизить вероятность получения вами «500 Internal Server Error».

1) Я динамически генерирую/загружаю файлы css и js со своего веб-сервера (файлы *.php). Поэтому я не знаю, действительно ли современный браузер кеширует это или вообще не может кешировать и обрабатывает это как новый запрос при каждой загрузке страницы? Потому что PHP генерирует это в зависимости от параметров, заданных, чтобы указать, какие css/js должны быть загружены. Является ли это даже проблемой или проблемой, которая может вызвать эту внутреннюю ошибку сервера 500?

2) Какое расширение Chrome вы можете порекомендовать для отслеживания и отладки всех сетевых данных? Какие инструменты вообще кроме Chrome DevTools могли бы мне помочь?

3) В цитируемом тексте говорится, что я должен позаботиться о тайм-аутах. Какие важные источники я должен проверить? Могут ли быть проблемы с запросами ajax или, может быть, с сеансами php?

4) Самое главное: Как я могу исправить эту ошибку? Домен можно найти на www.vaymodels.com, если это поможет упомянуть. Я не могу открыть его ни в одном браузере и даже на своем смартфоне (отключенный WiFi). Может быть, кто-то из вас сможет открыть его и просмотреть исходный код страницы.

Также стоит отметить, что такое поведение началось только в последние несколько дней. Я постоянно загружал файлы, когда работал над своим сайтом, и много обновлял домен, и случайно он вообще не загружался в течение 5-10 минут. Но после этого до него можно было добраться без ошибки 500. Теперь это кажется недостижимым.

Редактировать: мой веб-хостинг только что сказал мне, что они обновили мой лимит FPM с 15 до 30. Он сказал, что было слишком много php-процессов. Может ли это быть вызвано запросами mysql, которые я выполняю через файл, загружаемый через cronjob, или что это могут быть за процессы, которые я должен искать, и, скорее всего, проблема?


person AlexioVay    schedule 02.02.2017    source источник
comment
1. Если URL-адрес один и тот же для файлов, браузер может кэшировать его. Если это вызывает проблему? Без понятия! Мы не знаем, как выглядит ваш код. 2. Запрашивать стороннее программное обеспечение не по теме SO, и плагин Chrome не может видеть, что происходит на сервере (поскольку он ничего не возвращает в браузер). 3. Таймауты можно установить в php.ini или с помощью iniset(). Просто погуглите: установите тайм-аут в php. 4. Я не могу сказать, как исправить ошибку, поскольку у нас нет возможности узнать, что ее вызывает. Вы проверяли журналы ошибок?   -  person Magnus Eriksson    schedule 02.02.2017
comment
Я только что отредактировал свой вопрос. Спасибо что подметил это. Я бы показал свой код, если бы знал, какие части имеют отношение к моему делу. И я полностью перепутал это, так как я в основном работаю над FrontEnd, извините. Я почитаю на эту тему. Также я не могу получить доступ к своим журналам ошибок, но, как говорится в моем редактировании: это что-то о пределе FPM и слишком большом количестве процессов. Я думаю, что мой cronjob мог вызвать это, но я еще не уверен, что это процесс, который я должен учитывать.   -  person AlexioVay    schedule 02.02.2017


Ответы (1)


Вы должны сначала понять, какие скрипты вызывают ошибку 500. Вы можете просмотреть журналы ошибок или добавить в начало списка подозрительных скриптов:

ini_set("display_errors",1);
error_reporting(E_ALL);

это должно помочь вам понять, в чем проблема, но также может нарушить вывод, поэтому будьте осторожны, если вы используете его в производственных средах.

О кэшировании ресурсов js и css: вы можете указать apache указать браузеру использовать кэшированную копию файла, используя некоторые директивы в файле .htaccess, например:

<IfModule mod_expires.c>
ExpiresActive on
ExpiresByType text/css                  "access plus 1 month"
ExpiresByType application/javascript    "access plus 1 month"
ExpiresByType text/javascript           "access plus 1 month"

<IfModule mod_headers.c>
Header append Cache-Control "public"
</IfModule>

</IfModule>

Также имейте в виду, что такие ограничения срока действия могут быть полезны в производственной среде, где вы не должны часто их менять.

Надеюсь, это помогло.

person mario-mesiti    schedule 02.02.2017