Рейтинг:1

веб-страница показывает мне ошибку тайм-аута шлюза FastCGI

флаг in

Я продолжаю объяснять проблему и сценарий, немного сложный для моих ограниченных знаний.

изначально я думал, что это какая-то проблема, связанная с производительностью моих скриптов и запросов, поэтому я создал этот пост на сайте на испанском языке: СОЕДИНЯТЬ

но после изучения большей части дня; Я собираюсь приписать все это неправильной настройке моей среды разработки.

Я работаю с сервером 2 устройств:

  1. Местный:

    • Windows 10
    • Сервер Ларагон
  2. Разработка:

    • Убунту 20.04
    • XAMPP

в данном случае я сосредоточусь на местный:
Я настроил стек laragon для поддержки виртуальных хостов и запуска двух версий PHP (7.2/7.4). я следую этим 2 руководствам: Ссылка 1 И Ссылка 2

моя конфигурация апача:

Определите SRVROOT "C:/laragon/bin/apache/httpd-2.4.47-win64-VS16"

Корневой сервер "C:/laragon/bin/apache/httpd-2.4.47-win64-VS16"


Слушай 80


Модули LoadModule access_compat_module/mod_access_compat.so
LoadModule functions_module modules/mod_actions.so
LoadModule alias_module modules/mod_alias.so
Модули LoadModule allowmethods_module modules/mod_allowmethods.so
Модули LoadModule asis_module/mod_asis.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule модули authn_core_module/mod_authn_core.so
LoadModule authn_file_module modules/mod_authn_file.so
Модули загрузки authz_core_module/mod_authz_core.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule autoindex_module modules/mod_autoindex.so
Модули загрузки cgi_module/mod_cgi.so
LoadModule dir_module modules/mod_dir.so
Модули LoadModule env_module/mod_env.so
LoadModule headers_module modules/mod_headers.so
LoadModule include_module modules/mod_include.so
Модули LoadModule isapi_module/mod_isapi.so
LoadModule log_config_module modules/mod_log_config.so
Модули загрузки модуля mime_module/mod_mime.so
LoadModule модуль согласования_модуля модули/mod_negotiation.so
Модули LoadModule rewrite_module/mod_rewrite.so
LoadModule setenvif_module modules/mod_setenvif.so
Модуль загрузки socache_shmcb_module modules/mod_socache_shmcb.so
Модули LoadModule ssl_module/mod_ssl.so
LoadModule version_module modules/mod_version.so

<IfModule unixd_module>
    Пользовательский демон
    Групповой демон
</ЕслиМодуль>

Администратор сервера admin@example.com

ИмяСервера Ларагон

<Каталог />
    AllowOverride нет
    Требовать все отказано
</Каталог>


DocumentRoot "C:/laragon/www"
<Каталог "C:/laragon/www">
    Индексы опционов FollowSymLinks включает ExecCGI
    Аллововеррайд
    Требовать все предоставленные
</Каталог>

<IfModule dir_module>
    DirectoryIndex index.html index.php
</ЕслиМодуль>

<Файлы ".ht*">
    Требовать все отказано
</файлы>

ErrorLog "журналы/error.log"

Ошибка лог-уровня

<IfModule log_config_module>
    
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" в сочетании
    LogFormat "%h %l %u %t \"%r\" %>s %b" общий

    <IfModule logio_module>
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" в сочетании
    </ЕслиМодуль>

    CustomLog "logs/access.log" общий

</ЕслиМодуль>

<IfModule псевдоним_модуля>
    
    Псевдоним сценария /cgi-bin/ "${SRVROOT}/cgi-bin/"

</ЕслиМодуль>

<IfModule cgid_module>
    #
    # ScriptSock: На многопоточных серверах укажите путь к
    # сокет, используемый для связи с CGI-демоном mod_cgid.
    #
    #Scriptsock
</ЕслиМодуль>


<Каталог "${SRVROOT}/cgi-bin">
    Аллововеррайд
    Опции
    Требовать все предоставленные
</Каталог>

<IfModule headers_module>
    RequestHeader рано отключил прокси
</ЕслиМодуль>

<IfModule mime_module>

    TypesConfig conf/mime.types


    Приложение AddType/x-compress .Z
    Приложение AddType/x-gzip .gz .tgz

</ЕслиМодуль>



# Настройте mod_proxy_html для понимания HTML4/XHTML1
<IfModule proxy_html_module>
    Включить conf/extra/proxy-html.conf
</ЕслиМодуль>


<IfModule ssl_module>
    Встроенный запуск SSLRandomSeed
    Встроенное подключение SSLRandomSeed
</ЕслиМодуль>

AcceptFilter http нет
AcceptFilter https нет
EnableSendfile Выкл.
ВключитьMMAP выкл.

IncludeOptional "C:/laragon/etc/apache2/alias/*.conf"
IncludeOptional "C:/laragon/etc/apache2/sites-enabled/*.conf"
Включить "C:/laragon/etc/apache2/httpd-ssl.conf"
Включите "C:/laragon/etc/apache2/mod_php.conf"

ScriptAlias ​​/php72 "C:/laragon/bin/php/php72"
Приложение действия/x-httpd-php72-cgi/php72/php-cgi.exe
<Каталог "C:/laragon/bin/php/php72">
    Аллововеррайд
    Опции
    Требовать все отказано
    <Файлы "php-cgi.exe">
        Требовать все предоставленные
    </файлы>
</Каталог>

виртуальные хосты:

<VirtualHost *:80> 
    DocumentRoot "D:/webdev/Local/test1/"
    ServerName test1.me
    ServerAlias *.test1.me
    <Directory "D:/webdev/test1/">
        AllowOverride All
        Require all granted
    </Directory>
    <FilesMatch "\.php$">
        SetHandler application/x-httpd-php72-cgi
    </FilesMatch>
</VirtualHost>

Псевдоним phpmyadmin

Псевдоним /phpmyadmin "C:/laragon/etc/apps/phpMyAdmin/"
<Каталог "C:/laragon/etc/apps/phpMyAdmin/">
    Опционы Индексы FollowSymLinks MultiViews
    РазрешитьПереопределить все  
    Требовать местные
</Каталог>

Конфигурация MySQL

[клиент]
#password=ваш_пароль
порт=3306
сокет=/tmp/mysql.sock

[mysqld]
порт=3306
сокет=/tmp/mysql.sock
key_buffer_size = 512M
max_allowed_packet=4096M
table_open_cache=256
sort_buffer_size = 32M
read_buffer_size = 32M
read_rnd_buffer_size=32M
myisam_sort_buffer_size=128M
thread_cache_size = 16

безопасный-файл-priv=""
absolute_defaults_for_timestamp=1
datadir= "C:/laragon/data/mysql"
lower_case_table_names=2
sql_mode=""
ожидание_тайм-аут = 28800
интерактивный_тайм-аут = 28800


[mysqldump]
быстрый
max_allowed_packet=4096M

Конфигурация PHP для обеих версий (7.2/7.4)

file_uploads = Вкл.
upload_max_filesize = 4096M
max_file_uploads = 100
allow_url_fopen = Вкл.
memory_limit = 3G
post_max_size = 600M
максимальное_время_исполнения = 5000
максимальное_входное_время = 5000
max_input_vars = 5000
date.timezone= Америка/Панама
error_reporting = E_ALL
display_errors = вкл.
display_startup_errors = вкл.
html_errors = Вкл.
session.gc_maxlifetime = 2592000
session.cache_expire = 2592000

Как видите, я использую php 7.4 по умолчанию, используя обработчик apache 2.0; Я работаю с php 7.2, используя псевдоним.

  • phpmyadmin => php 7.4 обработчик Apache 2.0
  • test1.me => PHP 7.2 CGI/FastCGI

журналы ошибок MySQL:

2021-10-02T04:26:59.472441Z 35 [Примечание] Прервано соединение 35 с базой данных: пользователь avipac_dbproducts: «root» хост: «localhost» (ошибка при записи пакетов связи)

журналы ошибок Apache:

[Пт, 01 октября, 23:22:17.806390 2021] [cgi:error] [pid 3808:tid 1108] [client 127.0.0.1:61857] Время ожидания сценария истекло перед возвратом заголовков: php-cgi.exe, referer: http:// test1.me/
[Пт, 01 октября, 23:23:43.661155 2021] [cgi:error] [pid 3808:tid 1108] [клиент 127.0.0.1:61857] AH01215: Неустранимая ошибка PHP: допустимый размер памяти 3221225472 байт исчерпан (попытка выделить 20480 байт ) в D:\webdev\Local\test1\control\classgeneric\class.managerdb.php в строке 111: C:/laragon/bin/php/php72/php-cgi.exe, реферер: http ://test1.me/
[Пт, 01 октября, 23:23:43.676759 2021] [cgi:error] [pid 3808:tid 1108] [клиент 127.0.0.1:61857] AH01215: Неустранимая ошибка PHP: допустимый размер памяти 3221225472 байт исчерпан (попытка выделить 65536 байт ) в Unknown в строке 0: C:/laragon/bin/php/php72/php-cgi.exe, реферер: http://test1.me/
[Пт, 01 октября, 23:23:43.676759 2021] [cgi:error] [pid 3808:tid 1108] [client 127.0.0.1:61857] AH01215: Неустранимая ошибка PHP: допустимый размер памяти 3221225472 байт исчерпан (попытка выделить 24576 байт ) в Unknown в строке 0: C:/laragon/bin/php/php72/php-cgi.exe, реферер: http://test1.me/
[Пт, 01 октября, 23:24:59.451291 2021] [cgi:error] [pid 3808:tid 1104] [client 127.0.0.1:53918] Время ожидания сценария истекло перед возвратом заголовков: php-cgi.exe, referer: http:// test1.me/

Я определенно согласен с тем, что запрос mysql относительно велик для локальной среды в Windows; но проблема в том, что тот же запрос выполняется обработчиком apache 2.0 и php 7.4 менее чем за 1 секунду... но в CGI/FastCGI он останавливается, когда достигает тайм-аута (180 секунд/3 минуты)... у меня было деликатность установки одинаковых настроек для FastCGI и Apache Handler 2.0, но не уступчивая, потому что один терпит неудачу, а другой нет.

Конечно, конечно, поэтому одно из моих сомнений в том, что они говорят мне в моей настройке, какая конфигурация мне нужна для улучшения FastCGI. Это то, что я в основном игнорирую. (где, как и что).

возможно, кто-то скажет мне в моей настройке, какая конфигурация мне нужна для улучшения FastCGI. Это то, что я в основном игнорирую. (где, как и что) Я правда не понимаю, почему я не могу сделать Fast CGI хотя бы не ломающимся и работающим как Apache...

Я не знаю, что не так, что мне нужно или как решить эти ошибки... Я знаю, что CGI/FastCGI занимает много времени и потребляет много памяти, но я не знаю, почему это не работает, а обработчик Apache работает правильно.

Или существует какой-либо способ прокси-сервера Apache Handler 2.0 вместо использования php-cgi через псевдоним FastCGI?


Иллюстративные изображения Обработчик Apache 2.0:

введите описание изображения здесь

CGI/FastCGI:

введите описание изображения здесь

введите описание изображения здесь


ОБНОВЛЕНИЕ №1

я нахожу этот файл конфигурации: Примечание. Я предполагаю, что этот файл конфигурации важен; но я понятия не имею о его функциональности или о том, что я должен добавить, удалить или изменить, чтобы заставить FastCGI вести себя как Apache Handler 2.0.

    LoadModule fcgid_module "C:/laragon/etc/apache2/modules/mod_fcgid-2.3.10-win64-VS16.so"

<IfModule fcgid_module>
    FcgidInitialEnv ПУТЬ "C:/laragon/bin/php/php74;C:/Windows/system32;C:/Windows;C:/Windows/System32/Wbem;"
    FcgidInitialEnv SystemRoot "C:/Windows"
    FcgidInitialEnv системный диск "C:"
    FcgidInitialEnv TEMP "C:/Windows/Temp"
    FcgidInitialEnv TMP "C:/Windows/Temp"
    FcgidInitialEnv в папке "C:/Windows"

    # 10 часов: если у вас долго выполняются скрипты, увеличьте FcgidIOTimeout 
    
    FcgidIOTimeout 36000
    Фкгидлетимеаут 36000
    Фкгидпроцесслайфтайм 36000
    FcgidBusyTimeout 36000
    FcgidConnectTimeout 3600
    FcgidMaxRequestsPerProcess 0
    Фкгидмакспроцессес 50
    FcgidMaxRequestLen 81310720
    # Расположение php.ini:
    # FcgidInitialEnv PHPRC "C:/laragon/bin/php/php74"
    FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 0

    <Файлы ~ "\.php$>"
        AddHandler fcgid-скрипт .php
        Опции +ExecCGI
        FcgidWrapper "C:/laragon/bin/php/php74/php-cgi.exe" .php
    </файлы>
</ЕслиМодуль>
флаг us
Запрос, который вы выполняете, создает огромную таблицу результатов, и он не вписывается в допустимый предел памяти вашей установки. Вы должны исправить свой запрос, чтобы он генерировал только те данные, которые вам нужны.
ArcanisGK507 avatar
флаг in
Я пробовал, и он должен получить 2000 строк со 120 столбцами, так ли это тяжело? это то, что мне нужно получить.
Рейтинг:1
флаг fr
anx

Ошибки говорят вам, что это PHP (Версия 7.2, EoL сейчас, исправьте это!), которая пытается превысить лимит выделенной памяти.

Если скрипт был остановлен пока разговаривая с базой данных (журналы mysql заставляют меня так думать), то, возможно, один из ваших запросов к базе данных (не обязательно последний!) возвращает неожиданно большой набор результатов, который не соответствует памяти, разрешенной для php-скрипта?

Проверьте журнал запросов, выполните запросы вручную и посмотрите

  • если уместно: тогда вы хотите выделить больше ресурсов ИЛИ ЖЕ:
  • если один из них излишне велик: тогда вы хотите улучшить приложение, запрашивающее их, или очистить ненужные строки, чтобы уменьшить использование ресурсов.

Если это первое, то имейте в виду, что большинство систем настроены на отдельные конфигурации php для отдельных вариантов развертывания.Это может включать различные ограничения памяти или доступные расширения. Поскольку у вас есть несколько разных развертываний, используемый файл php.ini может отличаться для каждого из cgi, cli, fpm, apache2-mod, .. - если вы сомневаетесь, пусть ваш скрипт напечатает phpinfo(), чтобы подтвердить эффективный конфигурация.

ArcanisGK507 avatar
флаг in
Мне кажется, что это неправильный путь; Я определенно согласен с тем, что запрос относительно велик для локальной среды в Windows; но проблема в том, что тот же запрос выполняется обработчиком apache 2.0 и php 7.4 менее чем за 1 секунду... но в CGI/FastCGI он останавливается при достижении таймаута (180 секунд/3 минуты) мои сомнения: где мне модифицировать на этот раз уже настроил php.ini и не использует его; почему CGI/FastCGI занимает так много времени и потребляет так много памяти, как мне это улучшить.
ArcanisGK507 avatar
флаг in
Конечно, конечно, поэтому одно из моих сомнений в том, что они говорят мне в моей настройке, какая конфигурация мне нужна для улучшения FastCGI. Это то, что я в основном игнорирую. (где, как и что)
ArcanisGK507 avatar
флаг in
Мне кажется, я не нашел полного руководства по настройке Fast CGI ... в котором упоминаются моменты, которые меня затрагивают.
ArcanisGK507 avatar
флаг in
Эй, большое спасибо за ваше время и ваш ответ. Я подожду еще немного, чтобы увидеть, найду ли я что-то, что улучшит мою настройку.
anx avatar
флаг fr
anx
Вы должны отредактировать свой вопрос, чтобы уточнить.из ваших комментариев это звучит так, как будто вы пытаетесь определить диагностические шаги для сравнения двух разных файлов конфигурации, тогда как ваш вопрос больше похож на то, что вам нужно строгое напоминание о том, что пытаться исправить проблемы не легче, если вы продолжаете использовать неподдерживаемую версию программного обеспечения с большим количество исправленных ошибок.
ArcanisGK507 avatar
флаг in
Тысяча извинений. Я обновил свой пост, добавив немного больше контекста о своих сомнениях и о том, что я действительно ищу.

Ответить или комментировать

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