Linux Sunucularda Ramdisk Oluşturma ve Mysql Performansını Arttırma

Bir çok kişinin bildiği üzere sunucular üzerinde ki en büyük yükü her zaman için mysql oluşturur. Ancak Mysql sadece sunucuda ram ve işlemci kullanmaz.

Disk üzerinde çok ciddi veri girdi çıktıları yapar. Bazen bazı sorgular için mysql tmp directory üzerine 1 sn içerisinde 500 mb büyüklüğünde bir dosya yazabilir.

Bu durum özellikle “forum” sistemlerinde ve “WordPress” gibi sistemlerde çok karşılaşılan bir durumdur. İçinde arama yapılan yüksek kayıtlı tablolarda mutlaka karşınıza çıkar. Tabi bu esnada disk çok fazla işlem yaptığı için arkada bekleyen tüm işlemler beklemeye alınır. Sunucu load değerleri artar swap alanı tüketilmeye başlanır. Eğer sunucu yeterli miktarda ram alanınız var ise performansta %100 oranında artış görebilirsiniz. Yapılım işlemi ise oldukça basittir.

1 ) ilk olarak kernel satırımızdan ramdisk için gerekli alanı ayırmak için grub dosyamızı açıyoruz.

  • nano /boot/grub/menu.lst

2 ) Güncel kullandığımız kernele ait satıyı buluyoruz

ör: kernel /boot/vmlinuz-2.6.18-238.19.1.el5 ro root=LABEL=/

3 ) Şimdi kernel satırımızın sonuna ayıracağımız alanı yazıyoruz. Ben ör olarak 1 gb ayırıyorum.

Yukarıda ki satırı aşağıda ki örnekte ki gibi düzenliyoruz.(byte cinsinden yazılacak)

  • kernel /boot/vmlinuz-2.6.18-238.19.1.el5 ro root=LABEL=/ ramdisk_size=1048576

Dosyamızı kaydedip çıkıyoruz.

4 ) Ramdisk alanının olulturulabilmesi için sunucuyu reboot ediyoruz.

5 ) Ram diski oluşturmak için aşağıda ki komutu uyguluyoruz.

  • mkfs.ext3 -m 0 /dev/ram0

6 ) Oluşturulan ram diski artık istediğimiz şekilde mount edip kullanabiliriz. Bizim amacımızı için aşağıda ki komutları uyguluyoruz.

  • mkdir /ramdisk
  • mount /dev/ram0 /ramdisk

7 ) dizinin yazılabilir olması için mutlaka chmod unu 777 yapıyoruz.

  • chmod 777 /ramdisk

9 ) otomatik olarak başlatmak için ilk olarak dosyamızı açıyoruz.

  • nano /etc/init.d/makeramdisk

10 ) dosya içeriğine aşağıda ki komut satırlarını yapıştırıyoruz.

  • #!/bin/sh
  • # chkconfig: 2345 90 10
  • # description: Ramdisk Create
  • # processname:
  • # pidfile:
  • # config:
  • mkfs.ext3 -m 0 /dev/ram0
  • [ ! -d /ramdisk ] && mkdir -p /ramdisk
  • mount /dev/ram0 /ramdisk
  • chmod 777 /ramdisk

dosyayı kaydedip çıkıyoruz.

11 ) Dosyanın çalıştırılabilir hale gelmesini sağlıyoruz.

  • chmod 755 /etc/init.d/makeramdisk

diyerek init.d scriptimizi hazır hale getirmiş oluyoruz.

12 ) chkconfig ile sistem tarafından otomatik olarak çalışmasını sağlıyoruz.

  •      chkconfig –add makeramdisk
  •      chkconfig –level 2345 makeramdisk on

13 ) son olarak Mysql servisimizi restart edip sistemi devreye alabiliriz.

Yoğun sistemler üzerinde performans farkını çok basit bir şekilde anlayabilirsiniz.

İşlemlere başlamadan önce sorgu sürelerinizi not alın. Daha sonra Mysql i ramdisk üzerine geçirdikten sonra sorgu sürelerinizi karşılaştırın.

Aradaki farkı görebilirsiniz. Bunun haricinde günlük 500 K tekil hite sahip bir sitede disk okuma hızı normal şartlarda 50 mb lara düşmüşken mysql tmp yükünü ramdisk üzerine aldıktan sonra 350 Mb gibi muazzam bir fark ortaya çıkmakta.

Bu yönetimi sadece Mysql Performansını arttırmak için değil çok farklı yöntemler içinde kullanabilirsiniz. Bu tamamen sizin yaratıcı zekanıza kalmış. Ben kapıyı açıp 2 örnek gösteriyorum. Biri yukarıda biriside 150 K tekip hite sahip bir WordPress dizi sitesi için kullandığım bir yöntem.a

Ör: Yoğun WordPress sistemler Supercache modulu kullanıyorsanız tüm sayfalarınız cache dizini altına html olarak oluşturulur ve rewrite ile direk o dosyalar gösterilir. Eğer ramdiskinizi cache dizinine mount edip bu şekilde kullanırsanız sayfa yanıt hızlarınız yarı süre ile azalacaktır. Hangi disk sistemini kullanırsanız kullanın hiçbir disk ram kadar hızlı yanıt veremez.