Lock wait timeout exceeded; try restarting transaction

Tinggalkan Komentar

Saat kami mengembangkan aplikasi software, kami mendapati error report operasi database innodb yang melibatkan transaction dengan peringatan error sbb, “Lock wait timeout exceeded; try restarting transaction”. Kami cek pada show processlist apakah ada process transaction mysql yang masih berjalan, dan hasilnya tidak ada process transaction yang bekerja.

Selanjutanya mari kita analisa masalahnya, pada pesan tersebut dikatakan wait timeout, kami berpikir apakah time nya kurang panjang.  Terpintas ide solusi, apakah mungkin ada yang salah dengan konfigurasi innodb-nya. Ternyata memang benar <code>innodb_lock_wait_timeout</code> -nya kurang lama, setelah kami perbesar menjadi 500 dari nilai defaultnya yaitu 50, software yang kami kembangkan kembali bekerja normal.

Berikut langkah-langkah yang kami lakukan:

  • Buka dan edit file my.cnf

Karena ini adalah klien pekerjaan freelance kami maka kami menggunakan OS Linux Slackware, dimana letak konfigurasi my.cnf berada di direktori /etc/my.cnf .

$ cd /etc/
$ vim my.cnf

  • Uncomment semua parameter yang terdapat kata-kata innodb.

Hilangkan semua comment dengan keyword innodb, sehingga konfigurasi menjadi seperti ini:

innodb_data_home_dir = /var/lib/mysql
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /var/lib/mysql
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
innodb_buffer_pool_size = 16M
innodb_additional_mem_pool_size = 2M
# Set .._log_file_size to 25 % of buffer pool size
innodb_log_file_size = 5M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50

  • Perbesar nilai innodb_lock_wait_timeout (dengan satuan detik), pada konfigurasi kami sebesar 500.

innodb_lock_wait_timeout = 50

Menjadi

innodb_lock_wait_timeout = 500

  • Simpan konfigurasi my.cnf
  • Restart mysql daemon.

# /etc/rc.d/rc.mysqld restart

— Selesai —

Walhamdulillah, semoga bermanfaat, aamiin.

Setup DNS Server di Ubuntu

Tinggalkan Komentar

Artikel ini sebagai catatan kami saat melakukan setting dns server di ubuntu dan di server tersebut tidak terinstall control panel apapun. Karena kebiasaan menggunakan control panel seperti cpanel, spanel, atau ispconfig. Disaat tidak ada control panel, konfigurasi dns server dilakukan secara manual dengan menggunakan bind9.

DNS adalah singkatan dari Domain Name Server. Yang berfungsi mengubah nama domain menjadi deretan alamat ip. DNS server ini yang akan mengubah domain www.bengkelinux.wordpress.com menjadi alamat ip, yang komunikasi jaringan berkomunikasi dengan alamat ip tersebut. Setelah membeli nama domain kita perlu melakukan konfigurasi DNS server agar melakukan propagasi ke nama domain tersebut, sehingga saat seseorang mengakses nama domain tersebut akan terhubung dengan webservernya.

Awal mula bind adalah dari program dns bernama jeeves yang pertama kali diimplementasikan dan ditulis sendiri oleh Paul Mockapertis. Bind versi 4.9 dan 4.9.1 kemudian dirilis oleh DEC (yang sekarang diakusisi oleh Compaq Computer Corporation). Pemimpin dari proyek ini adalah Paul Vixie yang merupakan karyawan dari DEC serta dibantu oleh Phil Almquist, Robert Elz, Alan Barrett, Paul Albitz, Bryan Beecher, Andrew Partan, Andy Cherenson, Tom Limoncelli, Berthold Paffrath, Fuat Baran, Anant Kumar, Art Harkin, Win Treese, Don Lewis, Christophe Wolfhugel, dan lain-lainnya. BIND versi 4.9.2 kemudian diambil alih oleh Vixie Enterprises, dan Paul Vixie menjadi arsitek dan programmernya. BIND mulai dari versi 4.9.3 dan seterusnya kemudian diambil alih oleh Internet Software Consortium (ISC) dan akhirnya untuk pertama kalinya, pada tanggal 8 Mei 1997 Bob Halley dan Paul Vixie merilis versi BIND untuk keperluan produksi. Sekarang BINDversi 4 sudah mulai jarang digunakan, dan sebagai penggantinya adalah BIND versi 8 dan versi 9.[http://www.isc.org/products/BIND/bind-history.html]

Berikut catatan kami saat melakukan konfigurasi DNS Server menggunakan bind9.

  • Instalasi bind9.

# apt-get install bind9

  • Konfigurasi zone.
  • Pindah direktori ke /etc/bind

# cd /etc/bind

  • Buat file zone baru, dan edit sesuai kebutuhan. Kami menggunakan vim editor.

# vim /etc/bind/namaweb.com.db

Dan isi dari konfigurasi seperti dibawah. Ganti ‘namaweb.com’ dengan nama domain yang dikonfigurasi. Dan ip ’12.34.56.78′ dengan alamat ip webservernya.

$TTL 7200
@           IN          SOA     ns1.namaweb.com. hostmaster.namaweb.com. (
2009060708 ; serial
7200       ; refresh
3600       ; retry
604800     ; expire
10800      ; minimum
)

IN          NS      ns1.namaweb.com.
IN          NS      ns2.namaweb.com.
IN          MX  10  mail1.namaweb.com.

IN          A       12.34.56.78
mail1       IN          A       12.34.56.78

ns1         IN          A       12.34.56.78
ns2         IN          A       12.34.56.78

pop         IN          CNAME   mail1
smtp        IN          CNAME   mail1
webmail     IN          CNAME   mail1

www         IN          A       12.34.56.78
blog        IN          CNAME   www

  • Simpan.
  • Konfigurasi named.conf.options

Edit file /etc/bind/named.conf.options,

options {
directory "/etc/bind";

forward only;
forwarders {
8.8.8.8;
};

notify no;
auth-nxdomain no;       # conform to RFC1035
listen-on-v6 {any;};
allow-query {any;};     # urgent!
dnssec-enable yes;
};

  • Konfigurasi named.conf.local

Edit file /etc/bind/named.conf.local,

zone "namaweb.com" IN {
type master;
file "/etc/bind/namaweb.com.db";
};

  • Konfigurasi resolv.conf

Edit file /etc/resolv.conf,

nameserver 12.34.56.78
nameserver 8.8.8.8
nameserver 8.8.4.4

  • Restart bind9

# /etc/init.d/bind9 restart

  • Cek konfigurasi

# dig namaweb.com

Jika hasilnya seperti contoh dibawah ini maka konfigurasi anda benar, atau cara mudahnya langsung saja akses melalui browser internet alamat domainnya, (contoh diambil dari dig ke bengkelinux.wordpress.com) :

debi@blacknaml:~$ dig bengkelinux.wordpress.com

; <<>> DiG 9.7.1-P2 <<>> bengkelinux.wordpress.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57375
;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;bengkelinux.wordpress.com.    IN    A

;; ANSWER SECTION:
bengkelinux.wordpress.com. 198    IN    A    76.74.254.123
bengkelinux.wordpress.com. 198    IN    A    76.74.254.120
bengkelinux.wordpress.com. 198    IN    A    74.200.243.251
bengkelinux.wordpress.com. 198    IN    A    74.200.244.59
bengkelinux.wordpress.com. 198    IN    A    72.233.69.6
bengkelinux.wordpress.com. 198    IN    A    72.233.2.58

;; Query time: 1 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Wed May 23 10:36:06 2012
;; MSG SIZE  rcvd: 139

Alhamdulillah. Semoga bermanfaat.

Cara menonaktifkan autorun mysql, postgreesql, apache dan openssh di Slackware

3 Komentar

System Startup Slackware

Program pertama yang dijalankan Slackware adalah file /etc/inittab, program ini berisikan skrip bash. File skrip ini menjalankan file skrip /etc/rc.d/rc.S, sebagai inisialisasi system (sysinit). Dan file rc.S memanggil beberapa file skrip lainnya untuk melengkapi proses init startup, diantaranya beberapa file-file skrip yang dijalankan adalah:

  • rc.S, 
  • rc.acpid, 
  • rc.hotplug, 
  • rc.modules,
  • rc.pcmcia, 
  • rc.serial, 
  • rc.sysvinit.

Sehingga jika kita menginginkan service tertentu dijalankan atau dihentikan pada saat init startup, maka yang menjadi rujukan adalah file skrip /etc/rc.d/rc.S. File skrip ini diprogram dengan menggunakan bahasa Shell, dan menjalankan file-file skrip shell lainnya. Untuk melakukan start sebuah program saat init startup, kita perlu membuat file skrip rc.X terlebih dahulu, kemudian disalin ke folder /etc/rc.d, dengan cara penamaan rc.nama_program. Pada tulisan ini kami tidak menjelaskan bagaimana membuat file skrip rc.
Setelah init system berhasil, maka selanjutnya Slackware melakukan inisialisasi runlevel. Runlevel dibedakan menjadi dua yaitu multiuser dan single user. File-file skrip terkait dengan inisialisasi runlevel antara lain:

  • rc.0 –> Halt (runlevel 0)
  • rc.4 –> Multi User GUI (runlevel 4)
  • rc.6 –> Reboot (runlevel 6)
  • rc.K –> Single User (runlevel 1)
  • rc.M –> Multi User CLI (runlevel 2 dan 3) 

Secara default Slackware berjalan pada runlevel 2 dan 3. Runlevel startup default dapat diganti menjadi runlevel 1, 2, 3 atau 4 dengan cara mengedit file /etc/inittab. File skrip ini berisi tentang pada runlevel berapa Slackware melakukan inisialisasi runlevel startup serta bagaimanakah slackware akan melakukan shutdown, reboot dan halt.

Source: http://en.wikipedia.org/wiki/Runlevel#Slackware_Linux

Cara menonaktifkan mysql, postgreesql, apache dan openssh

Tujuan kami menonaktfikan keempat service tersebut adalah menghemat resource komputer, , daripada service tersebut sia-sia berjalan karena tidak digunakan. Dan jika kita menginginkan salah satu atau lebih dari keempat service tersebut berjalan maka dapat kita lakukan secara manual. Dengan cara menjalankan perintah /etc/rc.d/rc.mysqld start, /etc/rc.d/rc.httpd start, /etc/rc.d/rc.postgresql start, dan /etc/rc.d/rc.sshd start di terminal.

Langkah-langkah menonaktifkan mysql, postgreesql, apache dan openssh adalah:

  •  Sebagai root / superuser edit file /etc/rc.d/rc.M.
  • Cari pada file tersebut, keyword rc.mysqld, rc.httpd, rc.postgresql.

# Start the MySQL database:
if [ -x /etc/rc.d/rc.mysqld ]; then
 . /etc/rc.d/rc.mysqld start
fi

# Start Apache web server:
if [ -x /etc/rc.d/rc.httpd ]; then
 . /etc/rc.d/rc.httpd start
fi

# Start PostgreSQL database:
if [ -x /etc/rc.d/rc.postgresql]; then
 . /etc/rc.d/rc.postgresql start
fi

berikan tanda komentar (#) pada awal baris teks ketiga service di atas. Maka skrip menjadi:

# Start the MySQL database:
#if [ -x /etc/rc.d/rc.mysqld ]; then
# . /etc/rc.d/rc.mysqld start
#fi

# Start Apache web server:
#if [ -x /etc/rc.d/rc.httpd ]; then
# . /etc/rc.d/rc.httpd start
#fi

# Start PostgreSQL database:
#if [ -x /etc/rc.d/rc.postgresql]; then
# . /etc/rc.d/rc.postgresql start
#fi

  • Simpan file.
  • Karena openssh termasuk jenis service jaringan, maka file yang perlu diedit adalah file /etc/rc.inet2.

# Start the OpenSSH SSH daemon:
if [ -x /etc/rc.d/rc.sshd ]; then
 echo "Starting OpenSSH SSH daemon: /usr/sbin/sshd"
 /etc/rc.d/rc.sshd start
fi

ubah menjadi:

# Start the OpenSSH SSH daemon:
# if [ -x /etc/rc.d/rc.sshd ]; then
# echo "Starting OpenSSH SSH #daemon: /usr/sbin/sshd"
# /etc/rc.d/rc.sshd start
#fi

  • Simpan file.
  • Lakukan ujicoba dengan cara restart komputer. Apakah keempat service tersebut masih berjalan saat startup.

 

MySQL table ‘IN USE’ fix

Tinggalkan Komentar

Salah satu table dari database kami muncul pesan “IN USE”, karena tidak sempat discreenshoot, kami ambil/copy kan dari google screen yang mana kasus nya hampir sama. Beberapa orang sempat menyarankan, copy file bla-bla dan bla-bla dari windows ke linux, pokoknya saya gak mudeng caranya (karena menyangkut window-window), jadi pengennya gak pakai saran windows-windowsan namun pakai cara lain yang lebih sederhana dan tidak melibatkan windows.

table in use

Contoh: table IN USE, gambar di copy dari http://www.hostingformula.net/wp-content/uploads/2009/02/table_in_use.jpg

Maka cara mengatasi masalah tersebut yang lebih sederhana adalah:

  • Pilih tabel yang bermasalah, click centang tabel tersebut.
Centang tabel yang bermasalah

Centang tabel yang bermasalah

  • Pilih Action “repair table”, dan execute dengan cara klik “Go” di bagian bawah.
Pilih repair table

Pilih repair table

  • Abaikan warning, cek kembali tabel bersangkutan. Insya ALLAH kembali normal.

Walhamdulillah.

Import Project SVN [eclipse] dari Repository

Tinggalkan Komentar

Melanjutkan tulisan berjudul Subversive Eclipse, setelah subversive eclipse terinstall selanjutnya adalah melakukan import project svn dari repository svn server. Berikut langkah-langkahnya:

Import Project SVN dari Repository

  • Buat Project baru di File > New > PHP Project.
pilih berkas

Membuat project baru

  • Pilih folder yang akan digunakan sebagai folder project.
Pilih Folder

Pilih folder

Pilih Folder

Pilh Folder

  • Setelah project tercipta, klik kanan pada project, pilih Import.
Pilih project > import

Pilih project > import

Pilih SVN Project

Pilih SVN Project

  • Pilih “Use existing repository location:”.
Pilih "Use existing repository location:"

Pilih "Use existing repository location:"

  • Pilih repository yang dikehendaki. Klik Next. Klik Finish.
Pilih "Use existing repository location:"

Pilih "Use existing repository location:"

  • Maka akan keluar window Check Out As, pilih “Check out as a folder into existing project”.
pilih "Check out as a folder into existing project"

pilih "Check out as a folder into existing project"

  • Klik Next, Pilih project yang dikehendaki untuk di import source dari SVN server/repository.
Pilih project yang dikehendaki untuk di import source dari SVN server/repository

Pilih project yang dikehendaki untuk di import source dari SVN server/repository

  • Klik Finish. Tunggu beberapa saat karena eclipse sedang men-check out source.
Tunggu beberapa saat karena eclipse sedang men-check out source

Tunggu beberapa saat karena eclipse sedang men-check out source

Hasilnya

Hasilnya

Cara Lainnya:

  1. Klik kanan di Tab Workspace. Pilih “Import…”, kemudian keluar window Import, pilih folder SVN > Project from SVN.
  2. Klik Next, pilih “Use existing repository location:” dan pilih svn repository yang dikehendaki.
  3. Klik Next, Pilih Head Revision, Klik Next.
  4. Klik Finish.
  5. Muncul window “Check Out As”.
  6. Pilih “Check out as a project with the name specified:”, masukkan nama project yang digunakan untuk source dari svn repository ini. Klik Next.
  7. Hilangkan centang “Use default workspace location”, kemudian pilih lokasi folder yang dikehendaki.
  8. Klik Finish. Tunggu proses yang sedang berlangsung.

Selesai, walhamdulillah.

Entri Lama

Ikuti

Get every new post delivered to your Inbox.