Belum lama ini saya menulis tentang kebuntuan di sini: PDOException: SQLSTATE [40001]: Kegagalan serialisasi: 1213 Deadlock ditemukan ketika mencoba mendapatkan kunci;
Terlepas dari semua yang coba dilakukan oleh tim pengembangan saya, kami masih mendapatkan kesalahan seperti ini:
PDOException: SQLSTATE [40001]: Kegagalan serialisasi: 1213 Deadlock ditemukan ketika mencoba untuk mendapatkan kunci; coba mulai kembali transaksi: INSERT INTO {location_instance} (nid, vid, uid, genid, lid) VALUES (: db_insert_placeholder_0,: db_insert_placeholder_1,: db_insert_placeholder_2,: db_insert_placeholder_3,: db_insert_placeholder_3,: db_insert_placeholder_placeholder; Array ([: db_insert_placeholder_0] => 1059 [: db_insert_placeholder_1] => 1059 [: db_insert_placeholder_2] => 0 [: db_insert_placeholder_3] => cck: field_item_location: 1059 [: db_insert_places_place__perempat_posisi_place__perempat_posisi_posisi_ tempat] /var/www/website.com/sites/all/modules/location/location.module).
Meskipun tabel spesifik dalam contoh itu, kami mendapatkan kesalahan ini di tabel lain.
Ini situasiku. Saya telah mengambil proyek Universitas besar. Pada waktu tertentu ada 50.000 warga kampus yang menggunakan sistem setiap hari. Selain itu, saya melakukan migrasi 100-an dari 1000-an item konten baik secara manual maupun melalui kode modul khusus (migrasi dari data universitas lama) ke situs Drupal 7 yang baru ini.
Kesalahan ini membunuh kita, ke titik di mana kita hampir siap untuk menghapus pekerjaan tahun terakhir dan pergi dengan sesuatu yang lain jika Drupal tidak dapat menangani jenis beban ini.
Tapi itu kurang lebih pertanyaan saya - Bagaimana Drupal dapat menangani jenis beban ini? Bagaimana saya bisa mengatur alur kerja saya untuk dapat menangani banyak kegiatan ini? Apakah ini masalah Drupal? Masalah basis data?
Secara khusus, saya menjalankan Ubuntu, LAMP menumpuk RAM 16GB. Saya terbuka untuk saran apakah itu terkait Drupal, terkait database, konfigurasi server terkait, atau alur kerja yang berbeda untuk bekerja dalam kemampuan Drupal, jadi jangan ragu untuk menyarankan apa pun jika Anda memiliki pengalaman dengan aktivitas sebanyak ini.
sumber
Jawaban:
Saya bekerja untuk universitas Stanford dan telah melakukan hal serupa. Kami terus-menerus harus memuat lebih dari 100.000+ node secara teratur. Kami telah mengerjakan kode pemuatan kustom kami sendiri selama 2 tahun sekarang telah dapat mempercepat proses yang cukup besar menggunakan pcntl_fork. Satu-satunya hal yang harus Anda ingat adalah untuk menutup semua koneksi soket sebelum memanggil garpu. Misalnya Anda harus menutup koneksi mysql, koneksi memcache dan bahkan koneksi mongo. Drupal akan secara otomatis membuat koneksi baru ketika tidak ada. Sejauh masalah kebuntuan, kami dapat memperbaiki masalah itu dengan meletakkan
innodb_locks_unsafe_for_binlog = 1
.sumber
Jawabannya adalah: Konfigurasikan file my.cnf MySQL Anda dengan benar.
Setelah sedikit lebih dari satu minggu penelitian, saya telah menemukan bahwa Drupal 7 memang dapat menangani lalu lintas input yang bersamaan ini.
Deadlock PDOExceptions ini terkait dengan file my.cnf MySQL tidak dioptimalkan dengan benar. Dengan bantuan dari grup Drupal High Performance dan sumber-sumber lain, tim kami tidak memiliki satu Deadlock terjadi sejak menerapkan pengaturan konfigurasi baru untuk MySQL. Kami menguji skrip batch kami untuk mensimulasikan hingga 500 pengguna saat ini yang menyimpan konten tanpa masalah. Lihat utasnya di sini.
http://groups.drupal.org/node/260938
Secara khusus, Dalin menyarankan menggunakan wizard untuk mendapatkan file konfigurasi dasar berdasarkan spesifikasi server dan tipe tabel. Setelah menggunakan ini, bahkan tanpa tweaker lebih lanjut, deadlock berhenti. Berikut ini tautan ke wizard jika Anda ingin mencobanya: https://tools.percona.com/wizard
Saya akan dengan senang hati mengirimkan file my.cnf jika ada yang merasa terbantu.
Meskipun masalah Deadlock tidak lagi menjadi masalah, kami sekarang mendapatkan kesalahan ini sangat sering:
Mungkinkah ini masalah konfigurasi mysql juga?
sumber
http://dev.mysql.com/doc/refman/5.0/en/innodb-deadlocks.html halaman mysql ini menyarankan apa yang harus dilakukan ketika Anda menemui jalan buntu.
Dengan memperbaiki konfigurasi mysql Anda akan membantu Anda untuk menyelesaikan masalah ini.
sumber