Turkiye vBulletin Turkce Destek Sitesi-Turkiye Icin vBulletin Esittir vBulletinDestek.Org.. Turkce vBulletin Icin, Turkiyede vBulletin Icin vBulletinDestek.Org...

Geri git   vBulletin Kullanımı Ve Güncel vBulletin Eklentileri > Webmaster Alanı > Host ve Sunucular Hakkında Herşey.. > FTP - DNS - Database

Mysql Optimizasyonu Ayarları

FTP - DNS - Database icinde Mysql Optimizasyonu Ayarları konusu , Yoğun siteler için mysql sunuclarında dikkat etmemiz gereken değişkenler var. Ancak bu değişkenlerle oynarken sistemin kullandığı ram oldukça yükselebilir swap?e geçebilir böylelikle makinayı kilitleyebiliriz. Azar azar artırıp testler yaparak değişkenlerin ...

Konu İle Alakalı Etiketler: vbulletin mycnf,mycnf vbulletin,,keybuffersize mysql,

Konuyu değerlendir - Mysql Optimizasyonu Ayarları.
(0)
Değerlendirme: Toplam 0 oy almıştır, ortalama Değerlendirmesi puandır.

Yeni Konu aç  Cevapla
 
LinkBack Seçenekler Stil
Alt Temmuz-02-2009, 12:55   #1 (permalink)
Administrator
 
Shevko - ait Kullanıcı Resmi (Avatar)
 
Üyelik tarihi: Nisan 2008
Bulunduğu yer: ROFB.!
Mesajlar: 3.672
Tecrübe Puanı: 100 Shevko has much to be proud ofShevko has much to be proud ofShevko has much to be proud ofShevko has much to be proud ofShevko has much to be proud ofShevko has much to be proud ofShevko has much to be proud ofShevko has much to be proud of
Arrow Mysql Optimizasyonu Ayarları Mysql Optimizasyonu Ayarları

Yoğun siteler için mysql sunuclarında dikkat etmemiz gereken değişkenler var. Ancak bu değişkenlerle oynarken sistemin kullandığı ram oldukça yükselebilir swap?e geçebilir böylelikle makinayı kilitleyebiliriz. Azar azar artırıp testler yaparak değişkenlerin değerlerini analiz edip gerekli değişiklikleri yapmak gerekir.

Performasn artırmak için işimize en çok yarayacak değişkenler:

table_cache
key_buffer_size
query_cache_size
tmp_table_size
max_connections
wait_timeout
thread_cache_size
table_cache

Hali hazırda kullanılan değerleri mysql komut satırından SHOW STATUS komutu ile yada komut satırından

mysqladmin ?i10 processlist extended-status

komutu ile listeleyebiliriz. İhtiyacımıza göre bu değerleri /etc/my.cnf den set edebiliriz.

1) Eğer opened_tables değeriniz yüksekse mutemelen table_cache değeriniz oldukça düşüktür.

table_cache 64
Open_tables 64
Opened_tables 544468

table_cache tüm thread?lerdeki açık tablo sayısıdır. Mysql multi-threaded olduğundan tablodaki birçok sorguyu aynı anda çalıştırıyor olabilir ve bunların her biri yeni bir tablo açacaktır. Bu nedenle bir kaç tablomuz olmasına rağmen daha fazla open_table ihtiyacımız olacaktır.

opened_tables değerinin yüksek olması bize daha fazla cache ihtiyacımız olduğunu gösterir.
Performansı artırıcı en öenemli şeylerden bir tanesi table_cache değerini yükseltmek olacaktır.

2) Eğer key_reads değeriniz yüksekse muhtemelen key_buffer_size değeriniz çok düşüktür. Cache hit oranı Key_reads ve key_read_requests değerleriyle hesaplanabilir.

key_buffer_size 16M
Key_read_requests 2973620399
Key_reads 8490571
(cache hit rate = 0.0028)

key_buffer_size index buffer larının boyutunu ve okuma işlemi için index handle etme hızını etkiler. Mysql manuelinde de belirttiği gibi

Key_reads/Key_read_request oranı 0.01 değerinden düşük olmalıdır.

Ayrıca key_writes ve key_writes_request değerlerine de dikkat etmek gerekir.

key_writes/key_writes_request oranı 1 den küçük olmalıdır.

3) Wait_timeout max_connection thread_cache değerleri

Sleeping modunda uyuyan birçok process mevcut çünkü default olarak wait_timeout değeri oldukça yüksek. wait_timeout değerini iyice düşürürsek örneğin 30 saniyeye böylelikle mysql 30 saniye boşta kalan bağlantıları kapayacaktır.

Yoğun sunucularda Max_connection değerini de yükseltmemiz gerekecektir. Şu anda benim sunucumuzda set ettiğim değer 750. Idle client ların boşu boşuna boşuna tuttukları bağlantılar yeni bağlantı isteği yapan client ları engelleyebilir. Max_connection değerini artırarak bundan kaçınabiliriz.

Mysql multi-threaded olduğundan sunucu yeni threadler yaratacaktır. Bu da CPU zamanından oldukça çalacaktır. Bu problemin önüne geçmek için Thread_cache değişkeninden faydalanabiliriz.

Mysql manuelinde de belirttiği gibi

Kaç adet thread ?i tekrar kullanım için cahce de tutmalıyız? Bir client disconnect olduğunda client ?ın thread leri eğer thread_cache_size değeri kadar thread önceden kalmadıysa cache de tutulur . Tüm yeni thread ler en önce cache den alınır. Ve yanlız cache boş olduğunda yeni bir thread yaratılır. Eğer çok sayıda yeni bağlantı isteği (connection attemp) oluyorsa bu değişken performans artırımı için kullanılabilir. (Normalde iyi bir thread implementasyonunuz varsa çokda kayda değer bir peformasn kazanımı sağlamaz). Connections ve Threads_created değerlerini kıyaslayarak varolan thread cache inizin verimini gözlemleyebilirsiniz.

Threads_created değeri yüksekse thread_cache_size değişkeninin artırmayı düşünebiliriz.
Cache hit rate threads_created/Connections ile hesaplanabilir.

Threads_created/Connections.
thread_cache_size 0
Threads_created 150022
Connections 150023

thread_cache_size değeri my-large.cnf de 8 mb olarak önerilmiş. Biz alttaki formülü uygulayabiliriz.

table_cache = opened table / max_used_connection

4) tmp_table_size and Handler_read_rnd / Handler_read_rnd_next

Created_tmp_disk_tables değeri yüksekse tmp_table_size değişkeninin değerini artırmayı düşünebilirsiniz. Böylelikle temporary (geçici) tabloları diskte oluşmaktansa memory üzerinde oluşmasını sağlamış oluruz.

tmp_table_size 32M
Created_tmp_disk_tables 3227
Created_tmp_tables 159832
Created_tmp_files 4444

Created_tmp_disk_tables değeri statement lar çalıştırılırken disk üzerinde yaratılan temporary tabloların sayısıdır. Created_tmp_tables ise memory üzerinde yaratılanlardır.
Memory de yaratmak varken disk üzerinde yaratmak kötü bir durum. tmp_tables ın %2 kadarı diske giderse o kadar da kötü değil aslında. Yinde de tmp_table_size değerini artırmak fena fikir değil.

Handler_read_rnd çok yüksekse muhtemelen Mysql in tüm tabloları taramasını gerektirecek çok sayıda sorgunuz var ya da key ?leri doğru dürüst kullanamayan Join ?leriniz var demektir.
Handler_read_rnd 27712353
Handler_read_rnd_next 283536234

Örneğin üstteki değerler yüksek. Indexlerimizi ve sorgularımızı gözden geçirmemiz gerekiyor olabilir.

Son olarak değerleri çok yüksek değerlere almamanı gerekir. Sistemin çkmesine neden olabilirsiniz. Azar azar artırarak denemeler yapmalı değişkenlerde gödrdüğünüz değerlere göre analiz yapmalısınız.

Örneğin Max_conneciton değeri artırıldığında ram kullnımı oldukça artacaktır. Max_connections hesabı için

Used MySQL memory = key_buffer + max_connections * (join_buffer + sort_buffer + thread_stack + tmp_table_size)

Bir de table_cache değerini artırırken dikaktli olmak gerekir. Çoğu işletim sistemi ?open file descriptors? sayısını limitler. Mysql bir çok dosyayı açmak istediğinde işletim sistemi bu işlemi red edebilir.

Tüm bu bilgileri öğrenmemi sağlayan InterWorx ?dan Pascal?a teşekkürler.

Tüm bu bilgilerin ışığında benim sunucumda yaptığım ve gayet memnun kaldığım ayarlar.

Benim mysql sunucum için yaptığım ayarlar :

# The MySQL server
[mysqld]
key_buffer = 384M
max_allowed_packet = 8M
table_cache = 1024
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 32M


optimizasyon
2 adet Xeon 2.8 cpu bulunan 2 gb ram sunucuda denenmiştir .


" Bu Ay Cevap Alamadığınız Konular İçin PM Atın Lütfen "
  • Lütfen Kuraları Okuyunuz
  • Konu Açmadan Önce Lütfen Arama Yapın!
  • AcilÖnemliDikkat ve Benzeri Başlıklarla Açılan Konular Silinecektir!
  • Verilen Emeklere Paylaşımlara Karşılık Olarak Tek Beklentimiz Sadece Bir Teşekkür.(Mesajlarda Saçmalayanlara)
Shevko isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Buraya Reklam Vermek Sadece 15 TL!!
Cevapla


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 
Seçenekler
Stil

vBulletin Turkey Support Site Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık

Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
my-huge.cnf ve my.cnf mysql optimizasyon Shevko FTP - DNS - Database 0 Temmuz-02-2009 12:53
profilinizi kişiselleştirin ayarları değişmiyor yenibeyin Diğer Sorular/Sorunlar 5 Ekim-14-2008 17:32
vBulletin Optimizasyonu Shevko vBulletin Genel 2 Haziran-03-2008 13:17
MySQL Güvenliği Shevko Webmaster Genel 0 Mayıs-25-2008 19:34
vBulletin Forum Optimizasyonu Shevko vBulletin Genel 0 Mayıs-13-2008 08:20


alexa
Rss
vBulletin Turkey FriendFeed
Valid XHTML 1.0 Transitional
Powered by vBulletin® Version Gizlenmiştir
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.2
Copyright © 2008-2010 vBulletinDestek.Org
vBulletin Turkey Support Site   vBulletin Turkey Support Site