Magento MySQL เกิดข้อผิดพลาด


14

ฉันมีปัญหาแปลก ๆ มากมายใน Magento CE 1.7.0.2 ในระหว่างการดำเนินการตามปกติไซต์จะสร้างหน้าข้อผิดพลาดของวีโอไอพีเป็นครั้งคราว ( มีข้อผิดพลาดในการประมวลผลคำขอของคุณ ) ทั้งส่วนหน้าและส่วนหลัง ดูรายงานที่เกี่ยวข้องฉันเห็นข้อความต่อไปนี้:

"SQLSTATE[HY000] [2006] MySQL server has gone away"

บางครั้ง แต่บ่อยครั้งที่ข้อความรายงานจะอ่าน:

 Connection reset by peer

ฉันได้ดูvar> log> system.logและMySQL has gone awayข้อผิดพลาดดังต่อไปนี้:

Warning: PDO::__construct(): MySQL server has gone away  in /var/www/html/domain.com/live/lib/Zend/Db/Adapter/Pdo/Abstract.php on line 129
Error while reading greeting packet. PID=1863  in /var/www/html/domain.com/live/lib/Zend/Db/Adapter/Pdo/Abstract.php on line 129

นอกจากนี้ข้อผิดพลาดต่อไปนี้น่าจะเกิดขึ้นกับทุกคำขอรวมถึงMySQL has gone awayข้อผิดพลาด:

 Warning: include(File.php): failed to open stream: No such file or directory  in /var/www/html/domain.com/live/lib/Varien/Autoload.php on line 93
 Warning: include(): Failed opening 'File.php' for inclusion

ฉันได้ดูบทความส่วนใหญ่ที่ฉันสามารถค้นหาเกี่ยวกับเรื่องนี้และ tinkered กับพารามิเตอร์ฐานข้อมูลจนกระทั่งวัวมาบ้าน แต่ข้อผิดพลาดยังคงอยู่

หลังจากติดตามQnA อื่นเกี่ยวกับคอมไพเลอร์ฉันสังเกตว่าหน้าผู้ดูแลระบบ> เครื่องมือ> การรวบรวมนั้นว่างเปล่าทั้งหมด ฉันคิดว่าสิ่งเหล่านี้เป็นข้อผิดพลาดที่เกี่ยวข้อง แต่การเข้าใจถึงการแก้ไขข้อบกพร่องหรือสาเหตุจะเป็นประโยชน์

ฉันขอโทษถ้านี่ไม่สอดคล้องกัน; ฉันตื่นมาประมาณ 42 ชั่วโมงดังนั้นโปรดขอคำชี้แจงใด ๆ ขอขอบคุณ.

- อัปเดต -

เซิร์ฟเวอร์สแต็กของฉันมีความชัดเจน:

PHP 5.5.4 (PHP-FPM)
Nginx 1.4.2
MySQL 5.5.33

- อัปเดต -

มันเกิดขึ้นกับฉัน (หลังจากนอนหลับบ้าง) ที่ฉันไม่เคยระบุ - ฐานข้อมูล PHP และฐานข้อมูล MySQL อยู่บนเซิร์ฟเวอร์ฮาร์ดแวร์แยกต่างหาก - สำคัญมากที่จะรู้ว่าถ้าคุณจะช่วยฉัน !! ฉันขอโทษ.


1
คุณใช้การเชื่อมต่อฐานข้อมูลแบบถาวรหรือไม่? ถ้าเป็นเช่นนั้นลองปิดการใช้งานพวกเขา ฉันยังตรวจสอบไฟล์บันทึกของ mysql เพื่อดูว่ามีข้อผิดพลาดหรือไม่หรือว่าเป็นการเริ่มต้นใหม่จริง ๆ กับการเชื่อมต่อที่ถูกทิ้ง
davidalger

ขอบคุณเดวิดที่ปรับแต่งล็อก MySQL และฐานข้อมูลจะไม่ถูกโจมตีเมื่อเกิดข้อผิดพลาด ฉันใช้การเชื่อมต่อแบบถาวรการปิดใช้งานไม่ได้ช่วย :(
Jongosi

1
คุณคิดว่าการเชื่อมต่อไม่ดี สาเหตุของข้อผิดพลาดนั้นคือฐานข้อมูลไม่เคยมีข้อความ ลองแก้ไขข้อบกพร่องโดยใช้ข้อมูลการเชื่อมต่อจาก local.xml เพื่อเรียกใช้ฟังก์ชัน mysqli ดูว่าเกิดอะไรขึ้น
SH-

ขอบคุณดูเหมือนจะแก้ไขปัญหาในการแก้ไขไฟล์ในเครื่องแล้ว

คำตอบ:


9

สาเหตุส่วนใหญ่เกิดจากสาเหตุสองประการใดด้านล่าง

  1. เซิร์ฟเวอร์หมดเวลาและปิดการเชื่อมต่อ
    แก้ไข: ลองเพิ่มwait_timeoutตัวแปรในmy.cnf/my.ini ไฟล์กำหนดค่าของ mysqld ของคุณ
  2. เซิร์ฟเวอร์หลุดแพ็คเก็ตที่ไม่ถูกต้องหรือใหญ่เกินไป
    แก้ไข: เพิ่มขีด จำกัด ขนาดแพ็คเก็ตสูงสุดโดยการเพิ่มมูลค่าของmax_allowed_packetในmy.cnf/my.ini ไฟล์

โปรดเช็คอินไฟล์หากคุณพยายามหาบางสิ่งที่ใช้เวลานานเกินไปหรือไม่เหมาะสม


ขอบคุณ Anshu ฉันติดตามบันทึกการสืบค้น MySQL และฐานข้อมูลจะไม่ถูกตีด้วยการร้องขอ นอกจากนี้ถ้าฉันรีบูทเซิร์ฟเวอร์บางครั้งอาจเกิดข้อผิดพลาดภายใน 20 วินาทีของเซิร์ฟเวอร์ที่ออนไลน์ - สั้นเกินไปสำหรับการตั้งค่าเริ่มต้นที่จะหมดเวลา ฉันตั้งค่าmax_allowed_packetเป็น 2G และwait_timout86400 ยังไม่มีความช่วยเหลือ
Jongosi

โปรดตรวจสอบว่าการเชื่อมต่อฐานข้อมูลถูกต้องหรือไม่ตรวจสอบไฟล์แอป / etc / local.xml ของคุณ
Anshu Mishra

ขอบคุณ Anshu ใช่ถูกต้อง - การเชื่อมต่อเกิดขึ้นประมาณ 68% ของคำขอ
Jongosi

6

ปัญหาได้รับการแก้ไข! ขอบคุณทุกคนสำหรับความช่วยเหลือ นี่เป็นปัญหาไฟร์วอลล์ฮาร์ดแวร์กับเว็บโฮสต์แม้หลังจากเราปิดการใช้งาน

ตามที่ได้รับการยืนยันโดยทีมเซิร์ฟเวอร์ของ1 & 1ไฟร์วอลล์ฮาร์ดแวร์ได้รับการกำหนดค่าอย่างถูกต้อง แต่พวกเขาถูกสกัดกั้นการรับส่งข้อมูลที่ไม่ถูกต้องระหว่างเซิร์ฟเวอร์ไฟล์และเซิร์ฟเวอร์ db ประมาณ 25% ของเวลา

เราได้กำหนดค่า iptables แทนและปิดไฟร์วอลล์ฮาร์ดแวร์ทั้งหมด ความพร้อมใช้งาน 100% ในขณะนี้


2
พุทโธ่! ไฟร์วอลล์ประปราย ... ต้องรักปัญหาประเภทนี้ ดีใจที่คุณได้รับมันเรียง :)
davidalger

ปัญหาเดียวกันที่นี่และดูเหมือนว่าวิธีการแก้ปัญหาของคุณจะทำงานให้เราด้วย จะพูด 1 & 1 ด้วย การสนับสนุนช่วยเหลือคุณในทางใดทางหนึ่งหรือไม่? ฉันติดต่อคุณได้ไหม Twitter? Facebook? โปรดดูโปรไฟล์ของฉันสำหรับรายละเอียด ขอบคุณ
webDEVILopers

2

ฉันประสบปัญหาเดียวกันสำหรับ Magento 2.1 และบันทึกข้อผิดพลาด mysql ของฉันแสดงข้อผิดพลาดต่อไปนี้หลายครั้งในระหว่างกระบวนการ "MySQL หายไป"

...[Warning] File Descriptor 1228 exceeded FD_SETSIZE=1024

ที่อาจแก้ไขปัญหานี้ในตอนแรกตรวจสอบopen filesด้วยซึ่งในกรณีของผมก็คือ$ ulimit -n256

ประการที่สองเพิ่มtable_open_cache = {that ulimit -n value}ภายใต้ในส่วนของคุณ[mysqld]my.cnf

ตอนนี้รีสตาร์ท MySQL และหวังว่าคุณจะได้กลับไปสู่การปฏิบัติจริง

หมายเหตุ:ฉันใช้ Magento 2.1 แบบโลคัลบน OS X El Capitan ด้วย PHP 7.1 และ MySQL 5.7.15 บิลด์ด้วย Homebrew แต่ฉันพนันได้เลยว่าวิธีนี้จะใช้ได้กับการตั้งค่าที่เก่ากว่าหรือแตกต่างกันไป


1

แก้ไขไฟล์แอพ / etc / local.xml ในโฟลเดอร์ Magento ของคุณแทนที่รายการสำหรับโฮสต์ให้เป็น '127.0.0.1' แทน 'localhost'


ฐานข้อมูลอยู่บนเซิร์ฟเวอร์ฮาร์ดแวร์แยกต่างหากดังนั้นจึงใช้ที่อยู่ IP ของเซิร์ฟเวอร์ MySQL
Jongosi

1

พบข้อผิดพลาดเดียวกันเมื่อย้ายฐานข้อมูลขนาดใหญ่ระหว่าง 2 เซิร์ฟเวอร์

การเพิ่มสิ่งต่อไปนี้ชั่วคราวในไฟล์การกำหนดค่า mysql (/etc/mysql/my.cnf) บนเซิร์ฟเวอร์ (ปลายทาง) ในพื้นที่ของฉัน & การเริ่มระบบใหม่ mysql (บริการ mysql เริ่มต้นใหม่) แก้ไขปัญหาสำหรับฉัน:

max_allowed_packet      = 160M
wait_timeout            = 28800000
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.