Türkiye'nin En Eski Webmaster Forumu İyinet'e Hoşgeldiniz!

MySQL CPU Kullanımı my.cnf optimizasyonu

favorites

0
Onaylı Üye
Üye
Katılım
21 Aralık 2005
Mesajlar
4,812
Tepki puanı
2
Konum
Turkiye
tamam linux orası tamam da, benim sunucum windows
bu şekilde ayar yaptırsam olurmu windows sunucu için?
ben anlamadığım için soruyorum
 

Mickey

0
Onaylı Üye
Üye
Katılım
12 Eylül 2006
Mesajlar
1,264
Tepki puanı
0
Konum
izmir
tamam linux orası tamam da, benim sunucum windows
bu şekilde ayar yaptırsam olurmu windows sunucu için?
ben anlamadığım için soruyorum

windowsun kullandığı konfigurasyonlar tamamen farklıdır linux sonuçta uzun süre çalışıp yüksek performans verebilen bir işletim sistemidir, nasıl ki linuxta exe uzantılı uygulamaları açamıyorsak mysql optimasyonlarında uygulamalar farklıdır favorites.
 

favorites

0
Onaylı Üye
Üye
Katılım
21 Aralık 2005
Mesajlar
4,812
Tepki puanı
2
Konum
Turkiye
hımm ok anladım
biride windows server için Mysql optimasyonunu anlatabilirmi acaba:)
 

iyinet

Root
Root
İyinet Ekibi
Onaylı Üye
Katılım
2 Eylül 2002
Mesajlar
5,038
Tepki puanı
75
Konum
SEO
daha önce sizin optimize ettiğiniz confu yüklemiştim fakat sanırım bi terslik var. 1GB ramden 100mb civarında yiyor, 900mb boşta duruyor. makinada yük arttıkça cpu'ya yükleniyor komple...

top çıktısı şu şekilde:



server özellikleri:



serverda yalnızca 1 tane php+mysql site çalışıyor...

şu anki my.cnf:



teşekkürler...

Top ciktisindaki daki memory kullanimini MySQL i hemen tekrar baslattiktan sonra yorumlamak yanlis olur. Key buffer in dolmasi ve verimli kullanimi 1 gun kadar surebilir. Bu nedenle top ciktisini MySQL i calistirdiktan 1-2 un sonra inceleyin.

Az bir degisiklik yaptim, ama sorun devam ederse, index tanimlamalarinda sorun olabilir. CPU artimi genellikle table scan yapildiginda olur yani gerekli indexler yok ise...

[mysqld]
set-variable=local-infile=0
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
max_connections = 650
key_buffer = 256M
join_buffer_size = 2M
read_buffer_size = 2M
sort_buffer_size = 4M
table_cache = 1500
thread_cache_size = 384
wait_timeout = 15
connect_timeout = 10
tmp_table_size = 256M
max_heap_table_size = 256M
max_allowed_packet = 64M
max_connect_errors = 1000000
read_rnd_buffer_size = 1M
bulk_insert_buffer_size = 16M
query_cache_size = 64M
query_cache_type = 1
 

favorites

0
Onaylı Üye
Üye
Katılım
21 Aralık 2005
Mesajlar
4,812
Tepki puanı
2
Konum
Turkiye
bir anlasam yapıştıracağımda:)
programcı arkadaşa söyleyeyim buraya eklesin dosyayı
 

iyinet

Root
Root
İyinet Ekibi
Onaylı Üye
Katılım
2 Eylül 2002
Mesajlar
5,038
Tepki puanı
75
Konum
SEO
back_log

Bugune kadar belirtmedigim fakat MySQL in hizini arttiran diger bir degisken back_log dur.
Bu degiskeni, sadece CPU nuz cok guclu ise tanimlayin.
Ornegin: 4 x 3Ghz, yada 2 x 2.8Gz Xeon gibi...

Kullanmak isteyenler my.cfg dosyasinda [mysqld] bolumune asagidaki degiskeni ekleyebilirler. Ama unutmayin bu MySQL i hizlandirirken CPU kullaniminiz artar.



CPU kullanimindan sikayetci olanlar da bu islemin tersini yapabilirler. Yani MySQL i biraz yavaslatarak CPU dan kazanabilirler. Normalde back_log = 50 dir. CPU dan tasarruf etmek icin bunu su sekilde azaltabilirsiniz:

 

atay

0
Onaylı Üye
Üye
Katılım
29 Ekim 2005
Mesajlar
3,592
Tepki puanı
36
Top ciktisindaki daki memory kullanimini MySQL i hemen tekrar baslattiktan sonra yorumlamak yanlis olur. Key buffer in dolmasi ve verimli kullanimi 1 gun kadar surebilir. Bu nedenle top ciktisini MySQL i calistirdiktan 1-2 un sonra inceleyin.

Az bir degisiklik yaptim, ama sorun devam ederse, index tanimlamalarinda sorun olabilir. CPU artimi genellikle table scan yapildiginda olur yani gerekli indexler yok ise...

[mysqld]
set-variable=local-infile=0
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
max_connections = 650
key_buffer = 256M
join_buffer_size = 2M
read_buffer_size = 2M
sort_buffer_size = 4M
table_cache = 1500
thread_cache_size = 384
wait_timeout = 15
connect_timeout = 10
tmp_table_size = 256M
max_heap_table_size = 256M
max_allowed_packet = 64M
max_connect_errors = 1000000
read_rnd_buffer_size = 1M
bulk_insert_buffer_size = 16M
query_cache_size = 64M
query_cache_type = 1

şu anda my.cnf'u yazdığınız şekilde yeniden düzenledim. bahsettiğim 150mb civarındaki ram kullanımı yaklaşık 5-6 gündür aynıydı, bayadır takip edip yeniden mesaj yazmıştım.

serverda herhangi bir shell vb. hesap yok. sadece 1 tane mysql+php site çalışıyor, online sayısı ortalama 50-80 arası cpu kullanımı ise 0.80 civarı bu durumda gözüme fazla geliyor cpu kullanımı...

scriptin mysqlunda kullanılan text dışındaki tüm alanlar indeks durumda ve mysql çok mantıklı şekilde ayarlandı, yorabilecek bi durumda olmamalı. ama yinede büyük konuşmuyim :)

uzun lafın kısası, çok laf salatası yaptm galba :D serveri php+mysql bir siteyi en iyi şekilde çalıştıracak şekilde optimize etmem gerekli. şimdi bu cnf'u yükledim eğer durum yine değişmezse başlığa mesaj atmak marifetiyle sizi yeniden rahatsız etmek zorunda kalabilirim :)
 

atay

0
Onaylı Üye
Üye
Katılım
29 Ekim 2005
Mesajlar
3,592
Tepki puanı
36
4 gün yeni my.cnf ile çalışıyor makina. hala ramden yaklaşık 150mb yiyor, 850 boşta duruyor ve sitedeki online arttıkça cpu'ya yüklenmeye başlıyor. cpu 1.00'a kadar çıkabiliyor. şu an için 1.00 tabiki problem değil fakat ileride problem yaşamamak için şimdiden gerekli tedbiri almak lazım. 60-70 online kullanıcı ile 1.00 cpu çok fazla...

my.cnf için rame yüklenecek şekilde bir düzenleme nasıl yapabiliriz? size yine zahmet olacak ama... :)
 

iyinet

Root
Root
İyinet Ekibi
Onaylı Üye
Katılım
2 Eylül 2002
Mesajlar
5,038
Tepki puanı
75
Konum
SEO
4 gün yeni my.cnf ile çalışıyor makina. hala ramden yaklaşık 150mb yiyor, 850 boşta duruyor ve sitedeki online arttıkça cpu'ya yüklenmeye başlıyor. cpu 1.00'a kadar çıkabiliyor. şu an için 1.00 tabiki problem değil fakat ileride problem yaşamamak için şimdiden gerekli tedbiri almak lazım. 60-70 online kullanıcı ile 1.00 cpu çok fazla...

my.cnf için rame yüklenecek şekilde bir düzenleme nasıl yapabiliriz? size yine zahmet olacak ama... :)

key_buffer index varsa kullanilir. Kullandiginiz uygulama gereken indexlere sahip olmayabilir.
Arka planda calisan (cron) bir takim programlar, sendmail (email uygulamasi) da CPU yu mesgul edebilir.
 

atay

0
Onaylı Üye
Üye
Katılım
29 Ekim 2005
Mesajlar
3,592
Tepki puanı
36
scripti ben yazdım, gerekli tüm indeksleri mevcut. cron ilede tek birşey çalışıyor oda online/offline durumunu belirlemek için 10dk da bir.

benim anlamadığım, neden 1gb ramden 150mb yiyor daha sonra cpu ya yükleniyor ?
 

iyinet

Root
Root
İyinet Ekibi
Onaylı Üye
Katılım
2 Eylül 2002
Mesajlar
5,038
Tepki puanı
75
Konum
SEO
scripti ben yazdım, gerekli tüm indeksleri mevcut. cron ilede tek birşey çalışıyor oda online/offline durumunu belirlemek için 10dk da bir.

benim anlamadığım, neden 1gb ramden 150mb yiyor daha sonra cpu ya yükleniyor ?

Ram testi yapan bir progrma dene. O programlar tum ram e yazar ve kontrol eder.

Uygulamani ve indexleri gozden gecirebilirim.
 

atay

0
Onaylı Üye
Üye
Katılım
29 Ekim 2005
Mesajlar
3,592
Tepki puanı
36
Ram testi yapan bir progrma dene. O programlar tum ram e yazar ve kontrol eder.

Uygulamani ve indexleri gozden gecirebilirim.

ram testi yapan programlar hakkında hiçbir bilgim yok. centos 4 için kullanabileceğim birtane biliyormusunuz?
 

ENVER

0
Onaylı Üye
Üye
Katılım
21 Eylül 2006
Mesajlar
492
Tepki puanı
0
top - 15:44:20 up 3 days, 17:42, 1 user, load average: 4.15, 3.80, 3.39
Tasks: 211 total, 6 running, 205 sleeping, 0 stopped, 0 zombie
Cpu(s): 83.9% us, 4.0% sy, 0.0% ni, 12.2% id, 0.0% wa, 0.0% hi, 0.0% si
Mem: 4146524k total, 3439204k used, 707320k free, 95200k buffers
Swap: 2040244k total, 144k used, 2040100k free, 1709720k cached

Processor Information

AMD Opteron(tm) Processor 248 - 4gb ram - 73gb scsi hdd
----------

Memory Information

Memory: 4145228k/5242880k available (1868k kernel code, 47180k reserved, 755k data, 180k init, 3275904k highmem)

myconf içeriği aşşağıdaki gibi sizce ayarlar düzgün mü makinada vbseo kurulu vbulletin çalışacak.

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
skip-innodb
skip-locking
safe-show-database
max_connections = 500
max_user_connections = 100
key_buffer = 16M
myisam_sort_buffer_size = 64M
join_buffer_size = 1M
read_buffer_size = 1M
sort_buffer_size = 2M
table_cache = 1500
thread_cache_size = 256
wait_timeout = 28800
connect_timeout = 10
tmp_table_size = 32M
max_allowed_packet = 32M
max_connect_errors = 10
query_cache_limit = 1M
query_cache_size = 16M
query_cache_type = 1
query_prealloc_size = 16384
query_alloc_block_size = 16384

[mysql.server]
user=mysql
basedir=/var/lib

[mysqld_safe]
open_files_limit = 8192
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[mysqldump]
quick
max_allowed_packet = 16M

[myisamchk]
key_buffer = 64M
sort_buffer = 64M
read_buffer = 16M
write_buffer = 16M
 

iyinet

Root
Root
İyinet Ekibi
Onaylı Üye
Katılım
2 Eylül 2002
Mesajlar
5,038
Tepki puanı
75
Konum
SEO
myconf içeriği aşşağıdaki gibi sizce ayarlar düzgün mü makinada vbseo kurulu vbulletin çalışacak.

mysqld altindaki kisimi bu sekilde degistir.

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
skip-innodb
skip-locking
safe-show-database
max_connections = 500
max_user_connections = 100
key_buffer = 512M
myisam_sort_buffer_size = 64M
table_cache = 1500
tmp_table_size = 32M
max_allowed_packet = 32M
query_cache_size = 32M
query_cache_type = 1
 

Mywedding

1
Onaylı Üye
Üye
Katılım
26 Eylül 2006
Mesajlar
5,893
Tepki puanı
88
Konum
www.odatv.com
CPU AuthenticAMD, AMD Athlon(tm) XP 2400+
Operating system Linux 2.6.9-42.0.10.EL
Plesk version psa v8.1.1_build81070322.16 os_CentOS 4.2

top - 15:55:37 up 2 days, 7:55, 1 user, load average: 1.65, 1.57, 1.46
Tasks: 212 total, 2 running, 210 sleeping, 0 stopped, 0 zombie
Cpu(s): 48.0% us, 7.3% sy, 0.0% ni, 44.7% id, 0.0% wa, 0.0% hi, 0.0% si
Mem: 2043460k total, 1713340k used, 330120k free, 93048k buffers
Swap: 1052248k total, 0k used, 1052248k free, 762976k cached

[mysqld]
set-variable=local-infile=0
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
max_connections = 650
key_buffer = 128M
myisam_sort_buffer_size = 256M
join_buffer_size = 2M
read_buffer_size = 2M
sort_buffer_size = 4M
table_cache = 1500
thread_cache_size = 384
wait_timeout = 15
connect_timeout = 10
tmp_table_size = 256M
max_heap_table_size = 256M
max_allowed_packet = 64M
max_connect_errors = 1000000
read_rnd_buffer_size = 1M
bulk_insert_buffer_size = 16M
query_cache_limit = 12M
query_cache_size = 32M
query_cache_type = 1
query_prealloc_size = 163840
query_alloc_block_size = 32768

[mysql.server]
user=mysql
basedir=/var/lib

[mysqld_safe]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

resimlerim geç açılıyor , bide ram 2gb değiştim ...teşekkür ederim
 

iyinet

Root
Root
İyinet Ekibi
Onaylı Üye
Katılım
2 Eylül 2002
Mesajlar
5,038
Tepki puanı
75
Konum
SEO
resimlerim geç açılıyor , bide ram 2gb değiştim ...teşekkür ederim

Resimlerin gec acilmasi buyuk ihtimalle apache konfig dosyasindan. httpd.conf u iletirsen incelerim.

mysqld kismi icin;

[mysqld]
set-variable=local-infile=0
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
max_connections = 650
key_buffer = 128M
myisam_sort_buffer_size = 64M
table_cache = 1500
thread_cache_size = 384
wait_timeout = 45
tmp_table_size = 256M
max_heap_table_size = 256M
max_allowed_packet = 64M
max_connect_errors = 1000000
read_rnd_buffer_size = 1M
bulk_insert_buffer_size = 16M
query_cache_size = 32M
query_cache_type = 1
 

iyinet

Root
Root
İyinet Ekibi
Onaylı Üye
Katılım
2 Eylül 2002
Mesajlar
5,038
Tepki puanı
75
Konum
SEO
resimlerim geç açılıyor , bide ram 2gb değiştim ...teşekkür ederim

Apache konfigurasyonun cok kotu degil, resimler belkide bant genisligi nedeni ile yavas yukleniyor olabilir.
Asagidaki ayarlari yaparsan faydasi olur, digerlerini degistirme.

MaxKeepAliveRequests 10000
KeepAliveTimeout 3
<IfModule prefork.c>
StartServers 100
MinSpareServers 50
MaxSpareServers 100
 

sempaty

1
Onaylı Üye
Üye
Katılım
25 Şubat 2005
Mesajlar
3,824
Tepki puanı
20
Konum
hawaii. ama sanal tur.
üye olmayan bi arkadaşımın adına, şimdiden teşekkürler


Herkese selam. Arkadaşlar aşağıda belirtilen özelliklerde makinem aşırı yavaşlık ve yığılma eğiliminde.
Nasıl bir optimizasyon yapılabilir?
---
Load avarage ortalama: 3.50 civarında
Cpu kullanımı: %60 civarında daha da arttığı oluyor.
Ram kullanımı %80 civarında daha da arttığı oluyor.

Makine:
2gb ram, P4 3200 cpu, 2x250 GB SATAII hdd, Plesk 8.1.1 panel, centos 4.4 os, apache 2.0.59, php 4.4.7, mysql 4.1.22
zend optimizer kurulu, kernel 2.6.19.1.SM #5 SMP, mod_evasive kurulu, plesk firewall aktif, qscanq+clamav kurulu,
spamassain aktif ve çalışıyor son olarak sistem güncel.

Kullanılanlar:
phpbb 2.0.22 (son sürüm)
4images 1.7.4 (son sürüm)
joomla 1.0.12 (son sürüm)

anlık: 100-400 ziyaretçi var.
2 site çalışmakta.
---

my.cnf içeriği:
[mysqld]
set-variable=local-infile=0
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
old_passwords=1
max_allowed_packet=64M
query_cache_size=256M
query_cache_type=1
max_connections=300

[mysql.server]
user=mysql
basedir=/var/lib

[mysqld_safe]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
---
Şimdiden teşekkürler...
 
Üst