Score:1

หน้าเว็บแสดงข้อผิดพลาดเกตเวย์หมดเวลา FastCGI

ธง in

ฉันยังคงอธิบายปัญหาและสถานการณ์ที่ซับซ้อนเล็กน้อยสำหรับความรู้ที่จำกัดของฉัน

ตอนแรกฉันคิดว่ามันเป็นปัญหาที่เกี่ยวข้องกับประสิทธิภาพของสคริปต์และข้อความค้นหาของฉัน ดังนั้นฉันจึงสร้างโพสต์นี้ในไซต์เป็นภาษาสเปน: ลิงค์

แต่หลังจากการค้นคว้าในช่วงบ่ายเป็นส่วนใหญ่ ฉันกำลังจะระบุว่าทั้งหมดเกิดจากการกำหนดค่าสภาพแวดล้อม dev ของฉันไม่ถูกต้อง

ฉันกำลังทำงานกับเซิร์ฟเวอร์ 2 อุปกรณ์:

  1. ท้องถิ่น:

    • วินโดวส์ 10
    • เซิร์ฟเวอร์ลากอน
  2. การพัฒนา:

    • อูบุนตู 20.04
    • XAMPP

ในกรณีนี้ฉันจะเน้น ท้องถิ่น:
ฉันได้กำหนดค่า laragon stack เพื่อรองรับโฮสต์เสมือนและเรียกใช้ PHP 2 เวอร์ชัน (7.2 / 7.4) ฉันทำตาม 2 คำแนะนำนี้แล้ว: ลิงค์ 1 และ ลิงค์ 2

การกำหนดค่า apache ของฉัน:

กำหนด SRVROOT "C:/laragon/bin/apache/httpd-2.4.47-win64-VS16"

ServerRoot "C:/laragon/bin/apache/httpd-2.4.47-win64-VS16"


ฟัง 80


LoadModule access_compat_module modules/mod_access_compat.so
LoadModule actions_module modules/mod_actions.so
LoadModule alias_module โมดูล/mod_alias.so
LoadModule allowmethods_module modules/mod_allowmethods.so
LoadModule asis_module โมดูล/mod_asis.so
LoadModule auth_basic_module โมดูล/mod_auth_basic.so
LoadModule authn_core_module โมดูล/mod_authn_core.so
LoadModule authn_file_module โมดูล/mod_authn_file.so
LoadModule authz_core_module โมดูล/mod_authz_core.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_host_module โมดูล/mod_authz_host.so
LoadModule authz_user_module โมดูล/mod_authz_user.so
LoadModule autoindex_module โมดูล/mod_autoindex.so
LoadModule cgi_module โมดูล/mod_cgi.so
LoadModule dir_module โมดูล/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 modules/mod_isapi.so
LoadModule log_config_module โมดูล/mod_log_config.so
LoadModule mime_module โมดูล/mod_mime.so
LoadModule การเจรจาต่อรองโมดูลโมดูล/mod_negotiation.so
LoadModule rewrite_module โมดูล/mod_rewrite.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule socache_shmcb_module โมดูล/mod_socache_shmcb.so
LoadModule โมดูล ssl_module/mod_ssl.so
LoadModule version_module modules/mod_version.so

<IfModule unixd_module>
    ภูตผู้ใช้
    กลุ่มภูต
</หากโมดูล>

ผู้ดูแลระบบเซิร์ฟเวอร์ admin@example.com

ชื่อเซิร์ฟเวอร์ Laragon

<ไดเร็กทอรี />
    AllowOverride ไม่มี
    ต้องการปฏิเสธทั้งหมด
</ไดเร็กทอรี>


รูทเอกสาร "C:/laragon/www"
<ไดเรกทอรี "C:/laragon/www">
    ดัชนีตัวเลือก FollowSymLinks รวมถึง ExecCGI
    AllowOverride ไม่มี
    ต้องได้รับอนุญาตทั้งหมด
</ไดเร็กทอรี>

<IfModule dir_module>
    DirectoryIndex index.html index.php
</หากโมดูล>

<ไฟล์ ".ht*">
    ต้องการปฏิเสธทั้งหมด
</ไฟล์>

บันทึกข้อผิดพลาด "logs/error.log"

ข้อผิดพลาด LogLevel

<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 alias_module>
    
    ScriptAlias ​​/cgi-bin/ "${SRVROOT}/cgi-bin/"

</หากโมดูล>

<IfModule cgid_module>
    #
    # ScriptSock: บนเธรดเซิร์ฟเวอร์ กำหนดพาธไปยัง UNIX
    # socket ที่ใช้สื่อสารกับ CGI daemon ของ mod_cgid
    #
    #Scriptsock cgisock
</หากโมดูล>


<ไดเรกทอรี "${SRVROOT}/cgi-bin">
    AllowOverride ไม่มี
    ตัวเลือกไม่มี
    ต้องได้รับอนุญาตทั้งหมด
</ไดเร็กทอรี>

<ส่วนหัวของ IfModule_module>
    RequestHeader ยกเลิกการตั้งค่า Proxy ก่อนกำหนด
</หากโมดูล>

<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 เชื่อมต่อในตัว
</หากโมดูล>

ยอมรับตัวกรอง http ไม่มี
ยอมรับตัวกรอง https ไม่มี
ปิดใช้งานส่งไฟล์
ปิดการใช้งาน MMAP

รวมทางเลือก "C:/laragon/etc/apache2/alias/*.conf"
รวมทางเลือก "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">
    AllowOverride ไม่มี
    ตัวเลือกไม่มี
    ต้องการปฏิเสธทั้งหมด
    <ไฟล์ "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
    AllowOverride ทั้งหมด  
    ต้องการท้องถิ่น
</ไดเร็กทอรี>

การกำหนดค่า MySQL

[ลูกค้า]
#password=รหัสผ่านของคุณ
พอร์ต = 3306
socket=/tmp/mysql.sock

[มายเอสคิวลด์]
พอร์ต = 3306
socket=/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=""
explicit_defaults_for_timestamp=1
datadir = "C:/laragon/data/mysql"
lower_case_table_names=2
sql_mode=""
wait_timeout=28800
interactive_timeout=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
max_execution_time = 5,000
max_input_time = 5,000
max_input_vars = 5,000
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 handler 2.0; ฉันกำลังให้บริการ php 7.2 โดยใช้นามแฝง

  • phpmyadmin => php 7.4 Apache Handler 2.0
  • test1.me => php 7.2 CGI/FastCGI

บันทึกข้อผิดพลาดของ MySQL:

2021-10-02T04:26:59.472441Z 35 [หมายเหตุ] ยกเลิกการเชื่อมต่อ 35 ถึง db: 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 ผู้อ้างอิง: http:// test1.me/
[Fri Oct 01 23:23:43.661155 2021] [cgi:error] [pid 3808:tid 1108] [client 127.0.0.1:61857] AH01215: PHP Fatal error: ขนาดหน่วยความจำที่อนุญาต 3221225472 ไบต์หมดแล้ว (พยายามจัดสรร 20480 ไบต์ ) ใน D:\webdev\Local\test1\control\classgeneric\class.managerdb.php ที่บรรทัด 111: C:/laragon/bin/php/php72/php-cgi.exe ผู้อ้างอิง: http ://test1.me/
[Fri Oct 01 23:23:43.676759 2021] [cgi:error] [pid 3808:tid 1108] [client 127.0.0.1:61857] AH01215: PHP Fatal error: ขนาดหน่วยความจำที่อนุญาต 3221225472 ไบต์หมดแล้ว (พยายามจัดสรร 65536 ไบต์ ) ใน Unknown ที่บรรทัด 0: C:/laragon/bin/php/php72/php-cgi.exe ผู้อ้างอิง: http://test1.me/
[Fri Oct 01 23:23:43.676759 2021] [cgi:error] [pid 3808:tid 1108] [client 127.0.0.1:61857] AH01215: PHP Fatal error: ขนาดหน่วยความจำที่อนุญาต 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 ผู้อ้างอิง: http:// test1.me/

ฉันยอมรับอย่างแน่นอนว่าแบบสอบถาม mysql นั้นค่อนข้างใหญ่สำหรับสภาพแวดล้อมในเครื่องบน Windows; แต่ปัญหาคือแบบสอบถามเดียวกันดำเนินการโดย apache handler 2.0 และ php 7.4 ในเวลาน้อยกว่า 1 วินาที ... แต่ใน CGI / FastCGI จะหยุดเมื่อหมดเวลา (180 วินาที / 3 นาที) ... ฉันมี ความละเอียดอ่อนของการตั้งค่าเดียวกันสำหรับ FastCGI และ Apache Handler 2.0 แต่ไม่น่าเป็นไปได้เพราะอันหนึ่งล้มเหลวและอีกอันไม่ทำ

แน่นอน นั่นเป็นเหตุผลว่าทำไมฉันถึงสงสัยว่าพวกเขาบอกฉันในการตั้งค่าของฉันว่าฉันต้องกำหนดค่าใดเพื่อปรับปรุง FastCGI มันเป็นสิ่งที่ฉันละเลยเป็นหลัก (ที่ไหน อย่างไร และอะไร)

เป็นไปได้ว่ามีคนบอกฉันในการตั้งค่าว่าฉันต้องปรับปรุง FastCGI อย่างไร มันเป็นสิ่งที่ฉันละเลยเป็นหลัก (ที่ไหน อย่างไร และอะไร) ฉันไม่เข้าใจจริงๆ ว่าทำไมฉันถึงทำ Fast CGI ไม่ได้ อย่างน้อยก็ไม่พังและทำงานเหมือน Apache ทำ ...

ฉันไม่รู้ว่ามีอะไรผิดปกติ ต้องการอะไร หรือแก้ไขข้อผิดพลาดเหล่านี้อย่างไร ... ฉันรู้ว่า CGI / FastCGI ใช้เวลานานและใช้หน่วยความจำมาก แต่ฉันไม่รู้ว่าทำไมมันถึงไม่ทำงานและ Apache Handler ทำงานอย่างถูกต้อง

หรือมีวิธีใดในการพร็อกซี Apache Handler 2.0 แทนการใช้ php-cgi ผ่านนามแฝง FastCGI


ภาพประกอบ อาปาเช่ตัวจัดการ 2.0:

ป้อนคำอธิบายรูปภาพที่นี่

CGI/เร็วCGI:

ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่


อัปเดต #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 PATH "C:/laragon/bin/php/php74;C:/Windows/system32;C:/Windows;C:/Windows/System32/Wbem;"
    FcgidInitialEnv SystemRoot "C:/Windows"
    FcgidInitialEnv SystemDrive "C:"
    FcgidInitialEnv TEMP "C:/Windows/Temp"
    FcgidInitialEnv TMP "C:/Windows/อุณหภูมิ"
    FcgidInitialEnv windir "C:/Windows"

    # 10 ชม.: ในกรณีที่คุณเรียกใช้สคริปต์เป็นเวลานาน ให้เพิ่ม FcgidIOTimeout 
    
    FcgidIOTimeout 36000
    FcgidIdleTimeout 36000
    FcgidProcessLifeTime 36000
    FcgidBusyTimeout 36000
    FcgidConnectTimeout 3600
    FcgidMaxRequestsPerProcess 0
    FcgidMaxProcesses 50
    FcgidMaxRequestLen 81310720
    # ที่ตั้ง php.ini:
    # FcgidInitialEnv PHPRC "C:/laragon/bin/php/php74"
    FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 0

    <ไฟล์ ~ "\.php$>"
        AddHandler fcgid-script .php
        ตัวเลือก +ExecCGI
        FcgidWrapper "C:/laragon/bin/php/php74/php-cgi.exe" .php
    </ไฟล์>
</หากโมดูล>
us flag
ข้อความค้นหาที่คุณกำลังดำเนินการสร้างตารางผลลัพธ์ขนาดใหญ่ และไม่พอดีกับขีดจำกัดหน่วยความจำที่อนุญาตสำหรับการตั้งค่าของคุณ คุณควรแก้ไขแบบสอบถามของคุณเพื่อให้สร้างเฉพาะข้อมูลที่คุณต้องการ
ArcanisGK507 avatar
in flag
ลองแล้วน่าจะได้ 2,000 แถว 120 คอลัมน์ หนักมั้ย? คือสิ่งที่ฉันต้องได้รับ
Score:1
ธง fr
anx

ข้อผิดพลาดจะบอกคุณถึง PHP (เวอร์ชัน 7.2 EoL ในขณะนี้แก้ไขสิ่งนั้น!) ที่พยายามเกินขีดจำกัดหน่วยความจำที่จัดสรรไว้

หากสคริปต์ถูกยกเลิก ในขณะที่ การพูดคุยกับฐานข้อมูล (บันทึก mysql ทำให้ฉันคิดอย่างนั้น) บางทีหนึ่งในแบบสอบถามฐานข้อมูลของคุณ (ไม่จำเป็นต้องเป็นรายการสุดท้าย!) กำลังส่งคืนชุดผลลัพธ์ขนาดใหญ่ที่ไม่คาดคิดซึ่งไม่พอดีกับหน่วยความจำที่อนุญาตสำหรับสคริปต์ php?

ตรวจสอบบันทึกแบบสอบถาม ดำเนินการแบบสอบถามด้วยตนเอง และดู

  • ถ้าเหมาะสม: คุณต้องการจัดสรรทรัพยากรเพิ่มเติม หรือ:
  • หากหนึ่งในนั้นมีขนาดใหญ่โดยไม่จำเป็น: คุณต้องการปรับปรุงแอปพลิเคชันที่สอบถามพวกเขาหรือล้างแถวที่ไม่จำเป็นเพื่อลดการใช้ทรัพยากร

หากเป็นกรณีเดิม โปรดทราบว่าระบบส่วนใหญ่ได้รับการตั้งค่าให้มีการกำหนดค่า php แยกต่างหากสำหรับตัวเลือกการปรับใช้แยกต่างหากซึ่งอาจรวมถึงขีดจำกัดของหน่วยความจำที่แตกต่างกันหรือส่วนขยายที่มีอยู่ เนื่องจากคุณมีการใช้งานที่หลากหลาย ไฟล์ php.ini ที่ใช้อาจแตกต่างกันไปในแต่ละ cgi, cli, fpm, apache2-mod, .. - หากมีข้อสงสัย ให้พิมพ์สคริปต์ของคุณ phpinfo() เพื่อยืนยัน มีประสิทธิภาพ การกำหนดค่า

ArcanisGK507 avatar
in flag
สำหรับฉันแล้วดูเหมือนว่ามันไม่ใช่วิธีที่ถูกต้อง ฉันยอมรับอย่างแน่นอนว่าข้อความค้นหานั้นค่อนข้างใหญ่สำหรับสภาพแวดล้อมในเครื่องบน windows; แต่ปัญหาคือแบบสอบถามเดียวกันดำเนินการโดย apache handler 2.0 และ php 7.4 ในเวลาน้อยกว่า 1 วินาที ... แต่ใน CGI / FastCGI จะหยุดเมื่อหมดเวลา (180 วินาที / 3 นาที) ข้อสงสัยของฉัน: ฉันจะแก้ไขได้ที่ไหน หมดเวลานี้กำหนดค่า php.ini แล้วและไม่ได้ใช้งาน เหตุใด CGI / FastCGI จึงใช้เวลานานและใช้หน่วยความจำมาก ฉันจะปรับปรุงสิ่งนี้ได้อย่างไร
ArcanisGK507 avatar
in flag
แน่นอน นั่นเป็นเหตุผลว่าทำไมฉันถึงสงสัยว่าพวกเขาบอกฉันในการตั้งค่าของฉันว่าฉันต้องกำหนดค่าใดเพื่อปรับปรุง FastCGI มันเป็นสิ่งที่ฉันละเลยเป็นหลัก (ที่ไหน อย่างไร และอะไร)
ArcanisGK507 avatar
in flag
สำหรับฉันแล้วดูเหมือนว่าฉันไม่พบคำแนะนำฉบับสมบูรณ์เกี่ยวกับการกำหนดค่า Fast CGI ... ที่กล่าวถึงจุดที่ส่งผลกระทบต่อฉัน
ArcanisGK507 avatar
in flag
เฮ้ ขอบคุณมากสำหรับเวลาและคำตอบของคุณ ฉันจะรออีกสักหน่อยเพื่อดูว่าฉันพบสิ่งที่ปรับปรุงการตั้งค่าของฉันหรือไม่
anx avatar
fr flag
anx
คุณควรแก้ไขคำถามของคุณเพื่อชี้แจง ..จากความคิดเห็นของคุณ ดูเหมือนว่าคุณกำลังพยายามระบุขั้นตอนการวินิจฉัยเพื่อเปรียบเทียบไฟล์การกำหนดค่าที่แตกต่างกันสองไฟล์ ในขณะที่คำถามของคุณอ่านดูเหมือนคุณต้องการคำเตือนที่เข้มงวดว่าการพยายามแก้ไขปัญหานั้นไม่ง่ายไปกว่านี้อีกแล้วหากคุณยังคงใช้ซอฟต์แวร์เวอร์ชันที่ไม่ได้รับการบำรุงรักษากับซอฟต์แวร์ขนาดใหญ่ จำนวนข้อบกพร่องตั้งแต่แก้ไข
ArcanisGK507 avatar
in flag
ฉันขอโทษเป็นพันครั้ง ฉันได้อัปเดตโพสต์ของฉันพร้อมบริบทเพิ่มเติมเล็กน้อยเกี่ยวกับข้อสงสัยของฉันและสิ่งที่ฉันกำลังมองหาจริงๆ

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา