ประวัติศาสตร์:
เราย้ายการติดตั้ง Codeigniter 3 จาก Bluehost เป็น T3.2xlarge
อินสแตนซ์เดียวนั้นโฮสต์ apache2 และเซิร์ฟเวอร์ mysql เป็นฐานข้อมูลในเครื่อง
บน Bluehost อินสแตนซ์ทำงานได้ดี การย้ายข้อมูลเสร็จสิ้นเนื่องจาก Bluehost มีปัญหาขัดข้อง และเราต้องการโฮสติ้งที่เชื่อถือได้มากขึ้น
ข้อผิดพลาด
เนื่องจากการโยกย้ายเพจจึงสุ่มหยุดทำงานอย่างสมบูรณ์
พยายามรีสตาร์ท apache2 ด้วย:
sudo บริการ apache2 รีสตาร์ท
ใช้งานไม่ได้ ต้องรีบูตอินสแตนซ์ EC2 ใหม่ทั้งหมดเพื่อให้บริการทำงานอีกครั้ง
หลังจากรีบูต EC2 แล้ว apache2 และ mysql กำลังทำงาน และหน้านี้เปิดขึ้นโดยไม่เริ่มบริการหลังจากรีบูตอินสแตนซ์
ความพยายามแก้ไขข้อบกพร่อง 1
เนื่องจากหน้านี้หยุดทำงานเมื่อมีการเรียกใช้ฐานข้อมูลอย่างเข้มงวด ฉันถือว่าเซิร์ฟเวอร์ mysql เป็นจุดคอขวด
การโอนย้ายฐานข้อมูลทั้งหมดไปยัง RDS แบบไร้เซิร์ฟเวอร์ควรขจัดปัญหาคอขวดที่เกี่ยวข้องกับฐานข้อมูลทั้งหมด
ตอนนี้ crons ที่เข้มข้นของฐานข้อมูลเดียวกันกำลังจะสิ้นสุดลงแล้ว
เพื่อกำจัด cron ที่เป็นสาเหตุของระบบล่ม ฉันโคลน EC2 และใช้โคลนเพื่อรัน cron ในขณะที่โฮสต์ดั้งเดิมของเว็บเพจที่โดเมนชี้ไป
อย่างไรก็ตาม การหยุดทำงานแบบสุ่มยังคงมีอยู่
ความพยายามแก้ไขข้อบกพร่อง 2
สมมติว่าเป็นปัญหาหน่วยความจำ หลังจากตรวจสอบ phpinfi.php ฉันเห็นว่า PHP มี RAM 128Mb (บนเครื่อง 32Gb) ดังนั้นเพื่อดูว่า RAM มากขึ้นช่วยได้หรือไม่:
- memory_limit ตั้งเป็น 8192Mb
- รีบูต EC2
- รีสตาร์ท php7.4-fpm
- รีสตาร์ท apache2
phpinfo ยืนยันว่า memory_limit ถูกตั้งค่าเป็น 8192M
การหยุดทำงานแบบสุ่มยังคงมีอยู่
ความพยายามแก้ไขข้อบกพร่อง 3
ตรวจสอบคำสั่ง:
sudo apache2ctl -t
ผลตอบแทน:
ไวยากรณ์ตกลง
ตรวจสอบคำสั่ง:
นาโน /var/log/apache2/error.log
ประกอบด้วย:
[mpm_worker:notice] AH00295: จับ SIGTERM ได้ กำลังปิดเครื่อง
ดังนั้นฉันคิดว่า Apache กำลังปิดตัวลงด้วยเหตุผลบางอย่าง แต่ไม่สามารถเริ่มต้นใหม่ได้
ตรวจสอบคำสั่ง:
sudo บริการ apache2 รีสตาร์ท
ไม่โยนข้อผิดพลาด
ตรวจสอบคำสั่ง:
sudo apache2ctl รีสตาร์ท
ไม่โยนข้อผิดพลาด
ตรวจสอบคำสั่ง:
/usr/sbin/apache2 -V
แสดง:
[core:warn] [pid 24560] AH00111: กำหนดค่าตัวแปร ${APACHE_RUN_DIR} คือ
ไม่ได้กำหนดไว้
apache2: ข้อผิดพลาดทางไวยากรณ์ในบรรทัดที่ 81 ของ /etc/apache2/apache2.conf:
DefaultRuntimeDir ต้องเป็น
ไดเร็กทอรีที่ถูกต้อง สัมบูรณ์หรือสัมพันธ์กับ ServerRoot
เวอร์ชันเซิร์ฟเวอร์: Apache/2.4.41 (Ubuntu)
เซิร์ฟเวอร์ที่สร้างขึ้น: 2022-03-16T16:52:53
หมายเลข Magic Module ของเซิร์ฟเวอร์: 20120211:88
โหลดเซิร์ฟเวอร์: APR 1.6.5, APR-UTIL 1.6.1
รวบรวมโดยใช้: APR 1.6.5, APR-UTIL 1.6.1
สถาปัตยกรรม: 64 บิต
MPM ของเซิร์ฟเวอร์:
เซิร์ฟเวอร์คอมไพล์ด้วย....
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (เปิดใช้งานที่อยู่ IPv4 ที่แมป)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=256
-D HTTPD_ROOT="/etc/apache2"
-D SUEXEC_BIN="/usr/lib/apache2/suexec"
-D DEFAULT_PIDLOG="/var/run/apache2.pid"
-D DEFAULT_SCOREBOARD="บันทึก/apache_runtime_status"
-D DEFAULT_ERRORLOG="บันทึก/ข้อผิดพลาด_บันทึก"
-D AP_TYPES_CONFIG_FILE="mime.types"
-D SERVER_CONFIG_FILE="apache2.conf"
ที่ฉันสามารถเห็นได้ 2 สิ่ง:
- มีปัญหากับ ${APACHE_RUN_DIR}
- MPM ของเซิร์ฟเวอร์ไม่ส่งคืน MPM
ตรวจสอบคำสั่ง:
apache2 -l
ผลตอบแทน:
รวบรวมในโมดูล:
core.c
mod_so.c
mod_watchdog.ค
http_core.c
mod_log_config.c
mod_logio.c
mod_version.ค
mod_unixd.c
สิ่งที่ไม่แสดงโมดูล MPM
ตรวจสอบคำสั่ง:
apache2 -l
apache2ctl -l
ผลตอบแทน:
รวบรวมในโมดูล:
core.c
mod_so.c
mod_watchdog.ค
http_core.c
mod_log_config.c
mod_logio.c
mod_version.ค
mod_unixd.c
ตรวจสอบคำสั่ง:
a2query -M
ผลตอบแทน:
คนงาน
คำถาม:
และนี่คือจุดที่ฉันติดอยู่ตอนนี้
มีอะไรอีกบ้างที่ฉันสามารถตรวจสอบหรืออ่านได้จากความพยายามในการดีบัก 3 เพื่อดูว่าเหตุใด apache จึงหยุด/ไม่รีสตาร์ทและต้องรีบูตเซิร์ฟเวอร์ทั้งหมด