Drupal : Masalah dengan Query ke Database yang Timeout
Pernahkah anda menemukan eror seperti dibawah ini di situs anda?
[27-Jul-2007 06:38:19] PHP Warning: MySQL server has gone away query: INSERT INTO watchdog (uid, type, message, severity, link,
location, referer, hostname, timestamp) VALUES (0, 'php', 'MySQL server
has gone away\nquery: SELECT data, created, headers, expire FROM cache
WHERE cid = 'menu:0:en' in /home/hamburgi/public_html/orvwatch/includes/database.mysql.inc on line
121.', 2, '', 'http://www.orvwatch.com/pages/get_signs.html', '',
'64.34.145.201', 1185539899) in /home/hamburgi/public_html/orvwatch/includes/database.mysql.inc on line
121
Saya menemukan eror seperti diatas pada hari ini di salah satu situs saya. Erornya muncul ketika saya mencoba membuka salah satu menu di menu Site Building dan Site Configuration. Sepertinya ada masalah koneksi antara situs saya (menggunakan drupal) dan server MySQL. Seseorang di forum drupal memperkirakan eror yang terjadi itu disebabkan oleh dua hal, sehingga terjadilah eror seperti diatas itu:
1. Timeout (dalam kasus saya): Untuk yang seperti ini saya rasa ini adalah masalah umum pada penanganan koneksi pada database drupal. Eror seperti ini muncul jika jalannya fungsi lebih lama dibanding setingan timeout di database (berbeda-beda antar hostingan) dan tidak terjadi interaksi dengan database sedangkan fungsi auto-reconnect di database di matikan oleh tempat hostingan kita. Ini dapat terjadi si tiap module. Solusinya adalah mengkoneksikan ulang penanganan db drupal secara manual atau jika memungkinkan seting auto-reconnect di php.ini.
2. Query yang Terlalu Besar: Saya tidak yakin dengan yang ini. Namun mungkin saja ada query yang terlalu besar oleh beberapa module drupal yang melewati batas besaran query.
Dan saya tebak nomer satu adalah masalah yang persis terjadi dengan situs saya.
Ubah file php.ini, ungkap seseorang di Forum Drupal. namun bagaimana bisa merubahnya kalau kita tidak punya akses untuk merubah file php.ini. Tapi tidak untuk saya, administrator hosting tempat hosting saya memberikan file php.ini di tiap situs yang hosting di tempat dia. Cukup edit php.ini dan tambahkan baris berikut:
memory_limit = 16M
mysqli.reconnect = On
Dan berhasil. mysql.reconnect berarti situs drupal akan mencoba untuk koneksi ulang ke database MySQL meskipun waktu untuk melakukan query cukup lama. Seseorang di forum drupal memberikan solusi lainnya, edit file konfigurasi MySQL, file my.ini dan ubah nilai dari max_allowed_packet :
[mysqld]
max_allowed_packet=24M
Semoga berhasil
- roemasa's blog
- Add new comment
- 560 reads