Lagi asik ngoprek, saya mendapatkan laporan dari rekan kerja bahwasanya salah satu server mengalami hang, lalu saya cek beratnya minta ampun.
telusuri satu-satu load tertinggi berada pada mysql, lalu saya cek query mengarah ke eximstats

apa itu eximstats? eximstats berfungsi untuk meng-generate statistik dari log exim
biasanya eximstats ini menjadi crash disebabkan banyaknya pengiriman spam dari server. lalu saya coba lsof.

lsof sendiri berarti List Open File, yang mana lsof berfungsi untuk mengetahui file mana yang terbuka pada suatu proses.

Table eximstats is marked as crashed

lsof -i | grep smtp

lalu hasil dari pengecekan seperti dibawah ini

root@server [~]# lsof -i | grep smtp
exim        30461 mailnull   10u  IPv4 1824930315      0t0  TCP server.xxx.net:34524->parked-mtc-a.evip.aol.com:smtp (SYN_SENT)
exim        31865 mailnull    3u  IPv6 1801828064      0t0  TCP *:smtp (LISTEN)
exim        31865 mailnull    4u  IPv4 1801828065      0t0  TCP *:smtp (LISTEN)

lalu bagaimana mengatasi ini?

perlu diingat sekarang kita sedang bermain dengan 2 service (mysql dan exim) yang berjalan pada 1 server yang sama.

hal pertama yang harus kita lakukan adalah mengecek error log dan mendapatkan ip address yang melakukan aktifitas spam untuk diblokir.

setelah itu, baru kita dapat melakukan optimize terhadap server tersebut, caranya adalah

jika anda menggunakan whm/cpanel. silahkan disable eximstats pada whm >> Service Manager

login ke mysql

mysql> use eximstats ;
Database changed
 mysql> show tables ;

lakukan truncate kesemua table eximstats, lalu apa itu truncate?
Pengertian dari truncate Table itu sendiri adalah menghapus semua isi dari suatu table database. lebih spesifik, kita menghapus table seluruh isi dan seluruh strukturnya, dan mengembalikan lagi struktur table tersebut seperti semula.

mysql> truncate table smtp;
mysql> truncate table send; and more

cek hasil truncate table eximstats

root@server [~]# mysqlcheck -c eximstats
eximstats.defers OK
eximstats.failures OK
eximstats.sends OK
eximstats.smtp OK
root@jupiter [~]#

atau anda dapat mengecek dengan perintah,

root@server [~]# myisamchk -r /var/lib/mysql/eximstats/TABLENAME.MYI

opsi -r sendiri berarti recover, untuk perintah lengkapnya myisamchk anda bisa menggunakan perintah

root@server [~]# myisamchk --help

lalu restart service mysql and exim

Selamat berexplorasi 🙂