Magento MySQL Mengalami Kesalahan

14

Saya mengalami banyak masalah aneh di Magento CE 1.7.0.2. Selama operasi normal, situs sesekali akan menghasilkan Halaman Kesalahan Magento ( Telah terjadi kesalahan memproses permintaan Anda ) di frontend dan backend. Melihat laporan terkait, saya melihat pesan berikut:

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

Terkadang, tetapi lebih jarang, pesan laporan akan berbunyi:

 Connection reset by peer

Saya telah melihat var> log> system.log dan MySQL has gone awaykesalahannya disertai dengan yang berikut:

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

Selain itu, kesalahan berikut tampaknya terjadi pada setiap permintaan, serta MySQL has gone awaykesalahan:

 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

Saya telah melihat sebagian besar artikel yang dapat saya temukan tentang hal ini dan mengutak-atik parameter database sampai sapi pulang tetapi kesalahan tetap ada.

Setelah mengikuti QnA lain tentang kompiler, saya perhatikan bahwa halaman admin System> Tools> Compilation benar-benar kosong. Saya pikir ini semua adalah kesalahan terkait tetapi wawasan tentang debugging atau penyebab akan sangat membantu.

Saya minta maaf jika ini tidak jelas; Saya sudah bangun sekitar 42 jam, jadi tolong minta klarifikasi. Terima kasih.

- perbarui -

Tumpukan server saya untuk kejelasan:

PHP 5.5.4 (PHP-FPM)
Nginx 1.4.2
MySQL 5.5.33

- perbarui -

Terjadi pada saya (setelah tidur) yang tidak pernah saya tentukan - basis kode PHP dan MySQL db berada di server perangkat keras yang terpisah - sangat penting untuk mengetahui apakah Anda akan membantu saya !! Saya minta maaf.

Jongosi
sumber
1
Apakah Anda menggunakan koneksi database persisten? Jika demikian, coba nonaktifkan mereka. Saya juga akan memeriksa log mysql untuk melihat apakah ada kesalahan di sana atau apakah itu benar-benar memulai kembali vs hanya koneksi yang jatuh.
davidalger
Terima kasih, membuntuti log MySQL dan DB tidak pernah mengenai saat kesalahan terjadi. Saya menggunakan koneksi terus-menerus, menonaktifkan tidak membantu :(
Jongosi
1
Pernahkah Anda menganggap bahwa koneksi buruk. Penyebab kesalahan itu adalah bahwa DB tidak pernah menerima pesan. Coba debug dengan menggunakan info koneksi dari local.xml untuk memanggil fungsi mysqli. Lihat apa yang terjadi.
SH-
terima kasih, tampaknya telah memperbaiki masalah saya mengedit file lokal

Jawaban:

9

Ini sebagian besar disebabkan oleh salah satu dari dua alasan di bawah ini

  1. Server kehabisan waktu dan menutup koneksi.
    perbaikan: coba tambahkan wait_timeoutvariabel di my.cnf/my.ini file konfigurasi mysqld Anda .
  2. Server menjatuhkan paket yang salah atau terlalu besar.
    memperbaiki: meningkatkan batas ukuran paket maksimal dengan meningkatkan nilai max_allowed_packetdalam my.cnf/my.ini file.

Silakan periksa file jika Anda mencoba untuk mendapatkan sesuatu yang terlalu lama atau tidak dapat diterapkan.

Anshu Mishra
sumber
Terima kasih, saya mengikuti log permintaan MySQL dan database tidak pernah dipukul dengan permintaan. Juga, jika saya me-reboot server, kesalahan kadang-kadang dapat terjadi dalam waktu 20 detik dari server sedang online - terlalu pendek untuk pengaturan default bahkan untuk timeout. Saya mengatur max_allowed_packetke 2G dan wait_timoutke 86400, masih tidak membantu.
Jongosi
Silakan periksa apakah koneksi basis data benar, periksa file app / etc / local.xml Anda
Anshu Mishra
Thx Anshu, ya, itu benar - koneksi terjadi sekitar 68% dari permintaan
Jongosi
6

Masalah terselesaikan! Terima kasih untuk semua bantuannya. Ini adalah masalah firewall perangkat keras dengan host web, bahkan setelah mereka dinonaktifkan oleh kami.

Sebagaimana dikonfirmasikan oleh tim server 1 & 1 , firewall perangkat keras telah dikonfigurasikan dengan benar, tetapi mereka salah mencegat lalu lintas yang valid antara server file dan server db sekitar 25% dari waktu.

Kami telah mengkonfigurasi iptables dan mematikan firewall perangkat keras sepenuhnya. Ketersediaan 100% sekarang.

Jongosi
sumber
2
Astaga! Firewall sporadis ... harus menyukai masalah semacam itu. Senang Anda mendapatkannya diurutkan. :)
davidalger
Masalah yang sama di sini dan sepertinya solusi Anda akan berhasil juga bagi kami. Akan bicara 1 & 1 juga. Apakah dukungan itu membantu Anda? Bisakah saya menghubungi Anda? Indonesia? Facebook? Silakan lihat profil saya untuk detailnya. Terima kasih
webDEVILopers
2

Saya mengalami masalah yang sama untuk Magento 2.1 dan log kesalahan mysql saya menunjukkan kesalahan berikut beberapa kali selama proses "MySQL telah pergi":

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

Untuk berpotensi menyelesaikan masalah ini, pertama periksa open filesnilainya dengan $ ulimit -n, yang dalam kasus saya adalah 256.

Kedua, tambahkan di table_open_cache = {that ulimit -n value}bawah [mysqld]bagian dalam my.cnf.

Sekarang restart MySQL dan semoga Anda kembali beraksi.

Catatan: Saya menjalankan Magento 2.1 secara lokal di OS X El Capitan dengan PHP 7.1 dan MySQL 5.7.15 build dengan Homebrew. Tapi saya yakin solusi ini akan bekerja pada pengaturan lama atau berbeda juga.


sumber
1

Edit file app / etc / local.xml di folder Magento Anda, ganti entri untuk host menjadi '127.0.0.1' alih-alih 'localhost'.

broc
sumber
Basis data berada pada server perangkat keras yang terpisah, sehingga alamat IP dari server MySQL digunakan.
Jongosi
1

Mengalami kesalahan yang sama saat memigrasi database besar antara 2 server.

Menambahkan sementara waktu berikut ini di file konfigurasi mysql (/etc/mysql/my.cnf) di server (tujuan) lokal saya & memulai ulang mysql (service mysql restart) memperbaiki masalah bagi saya:

max_allowed_packet      = 160M
wait_timeout            = 28800000
Michael
sumber