R10.net  

Geri git   R10.net > Sunucu & Web Hosting > Site & Server Administration > Server Optimizasyon

Server Optimizasyon Server optimizasyonu nedir? Sunucu optimizasyonu nedir? Nasıl yapılır? Cloudflare, cpanel, mysql, apache ve cache optimizasyonları hakkındaki bilgi ve ticaret kategorisi

Cevapla
LinkBack Seçenekler
  #1  
Okunmamış 28-09-2008, 17:44:44
Üyeliği durduruldu
 
Üyelik Tarihi: 14-07-2005
Yaş: 46
Mesajlar: 120
Feedback Score: 6 Olumlu
Standart httpd.conf ve my.conf optimizasyon

Merhaba,
Dual xeon 2.8 işlemci, 2gb ram sunucuyu günlük yaklaşık 50000 ziyaretçiyi sorunsuz şekilde kaldıracak şekilde nasıl optimize etmek lazım?

Sayfalar veriyi mysqlden çekiyor, genelde txt ağırlıklı ama tasarım vs den kaynaklanan resim sayısı da az sayılmaz.

httpd.conf ve my.conf dosyalarında ne gibi değişiklikler yapmalıyım? bunlar dışında sunucu performansını arttırmak ve sunucunun çökmesini engellemek için neler yapabilirim?

Teşekkürler.
Alıntı ile Cevapla
Sponsor
  #2  
Okunmamış 06-10-2008, 10:38:50
Coşkun Çetin - ait Kullanıcı Resmi (Avatar)
Administrator
 
Üyelik Tarihi: 25-06-2005
Mesajlar: 9.089
Feedback Score: 318 Olumlu
Standart

50K ve üstü için tabi ki Cluster yapmayı öneririm

Hit artınca MySQL ve Apache veya bir başka webserverın birlikde çalışması makinayı kastırabiliyor güzel bir optimasyonla bir nebze önlem almış olursunuz.

50K ya yada 100K ya göre my.cnf vermek heralde loto oynamak gibi bişey olur. Çünkü
MySQL 'i Kullanan scriptler vBulletin, Smf vb. kullanım yogunlugu yaratılan indexlerin yetip yetmediği uzun süren sorgular vb. gibi bir çok fonksiyonlardan etkilenen ince ayar gerektiren bir veritabanı.

Öncelikle MySQL sunucunuzu minimum 2 gün ( 48 saat ) çalıştırın huyunu suyunu kavrasın makina

daha sonra

Kurulum:

SSH root olarak giriş yapın ve aşağıdaki komutu yazın,


Ardından CHMOD düzenleyin


Kod:
chmod 775 tuning-primer.sh
MYSQL durum sınaması için yapmamız gereken ,



Kod:
./tuning-primer.sh
Çalıştırın ve Çıkanları buraya yapıştırın. böylece Kullanımınıza göre güzel bir ayar verebilirim.

Konu Coşkun Çetin tarafından (06-10-2008 Saat 10:44:56 ) değiştirilmiştir.
Alıntı ile Cevapla
  #3  
Okunmamış 06-10-2008, 21:48:17
Üyeliği durduruldu
 
Üyelik Tarihi: 14-07-2005
Yaş: 46
Mesajlar: 120
Feedback Score: 6 Olumlu
Standart

Cevap için teşekkürler.
Cluster yapma imkanım maalesef yok şuan için. Sunuc tahmin ettiğim gibi siteyi taşıyınca problem çıkarmaya başladı. Top komutunda mysql kullanımı ortalama %60 gibi fakat bazen %100ü aşıyor. Ram kullanımı 1gb civarında boşta 1 gb ram var.
Siteler arada çok çok yavaşlıyor ve daha sonra açılmamaya başlıyor. İşin ilginci ben whm paneli kullanmaya devam edebiliyorum. Ordan httpd restart yapınca sunucu kendine geliyor ve 10 dk sonra tekrar siteler ya tam açılmıyor ya da çok geç açılıyor.
Mysql'e ssh ile bağlantı kurmada vs de bir sorun yok. Hatta uzak mysql management programları ile mysql yönetmeye devam edebiliyorum sitelere ulaşılamadığı zaman.
Önermiş olduğunuz scripti çalıştırdım sonuç aşağıda:
Kod:
mysqld is alive
        -- MYSQL PERFORMANCE TUNING PRIMER --
             - By: Matthew Montgomery -
MySQL Version 5.0.51a-community i686
Uptime = 8 days 23 hrs 30 min 44 sec
Avg. qps = 31
Total Questions = 24767892
Threads Connected = 7
Server has been running for over 48hrs.
It should be safe to follow these recommendations
To find out more information on how each of these
runtime variables effects performance visit:
http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html
Visit http://www.mysql.com/products/enterprise/advisors.html
for info about MySQL's Enterprise Monitoring and Advisory Service
SLOW QUERIES
The slow query log is NOT enabled.
Current long_query_time = 10 sec.
You have 8 out of 24767921 that take longer than 10 sec. to complete
Your long_query_time may be too high, I typically set this under 5 sec.
BINARY UPDATE LOG
The binary update log is NOT enabled.
You will not be able to do point in time recovery
See http://dev.mysql.com/doc/refman/5.0/en/point-in-time-recovery.html
WORKER THREADS
Current thread_cache_size = 0
Current threads_cached = 0
Current threads_per_sec = 3
Historic threads_per_sec = 1
Threads created per/sec are overrunning threads cached
You should raise thread_cache_size
MAX CONNECTIONS
Current max_connections = 100
Current threads_connected = 7
Historic max_used_connections = 66
The number of used connections is 66% of the configured maximum.
Your max_connections variable seems to be fine.
MEMORY USAGE
Max Memory Ever Allocated : 195 M
Configured Max Per-thread Buffers : 268 M
Configured Max Global Buffers : 17 M
Configured Max Memory Limit : 286 M
Physical Memory : 1.97 G
Max memory limit seem to be within acceptable norms
KEY BUFFER
Current MyISAM index space = 17 M
Current key_buffer_size = 7 M
Key cache miss rate is 1 : 3155
Key buffer fill ratio = 54.00 %
Your key_buffer_size seems to be fine
QUERY CACHE
Query cache is supported but not enabled
Perhaps you should set the query_cache_size
SORT OPERATIONS
Current sort_buffer_size = 2 M
Current read_rnd_buffer_size = 256 K
Sort buffer seems to be fine
JOINS
Current join_buffer_size = 132.00 K
You have had 634 queries where a join could not use an index properly
You should enable "log-queries-not-using-indexes"
Then look for non indexed joins in the slow query log.
If you are unable to optimize your queries you may want to increase your
join_buffer_size to accommodate larger joins in one pass.
Note! This script will still suggest raising the join_buffer_size when
ANY joins not using indexes are found.
OPEN FILES LIMIT
Current open_files_limit = 1024 files
The open_files_limit should typically be set to at least 2x-3x
that of table_cache if you have heavy MyISAM usage.
Your open_files_limit value seems to be fine
TABLE CACHE
Current table_cache value = 64 tables
You have a total of 326 tables
You have 64 open tables.
Current table_cache hit rate is 0%, while 100% of your table cache is in use
You should probably increase your table_cache
TEMP TABLES
Current max_heap_table_size = 16 M
Current tmp_table_size = 32 M
Of 5491605 temp tables, 7% were created on disk
Effective in-memory tmp_table_size is limited to max_heap_table_size.
Created disk tmp tables ratio seems fine
TABLE SCANS
Current read_buffer_size = 128 K
Current table scan ratio = 26 : 1
read_buffer_size seems to be fine
TABLE LOCKING
Current Lock Wait ratio = 1 : 533
You may benefit from selective use of InnoDB.
If you have long running SELECT's against MyISAM tables and perform
frequent updates consider setting 'low_priority_updates=1'
If you have a high concurrency of inserts on Dynamic row-length tables
consider setting 'concurrent_insert=2'.
Alıntı ile Cevapla
  #4  
Okunmamış 07-10-2008, 09:14:02
Coşkun Çetin - ait Kullanıcı Resmi (Avatar)
Administrator
 
Üyelik Tarihi: 25-06-2005
Mesajlar: 9.089
Feedback Score: 318 Olumlu
Standart

Şuanda Kullandığınız my.cnf uda koyarmısınız

cat /etc/my.cnf
Alıntı ile Cevapla
  #5  
Okunmamış 07-10-2008, 09:28:34
Üyeliği durduruldu
 
Üyelik Tarihi: 14-07-2005
Yaş: 46
Mesajlar: 120
Feedback Score: 6 Olumlu
Standart

Şuan kullanılan my.cnf dosyasında sadace şu satırlar var;
Kod:
[mysqld]
set-variable = max_connections=500
safe-show-database
Ayrıca dün apache error logları inceledim ve tıkanmanın olduğu zamanlarda sunucunun
"[error] server reached MaxClients setting, consider raising the MaxClients setting"
şeklinde hatalar verdiğini farkettim. Bunun üzerine httpd.conf dosyasını şu şekilde yeniden düzenledim.

Kod:
Timeout 20

<IfModule prefork.c>
    StartServers 10
    MinSpareServers 30
    MaxSpareServers 50
    ServerLimit 256
    MaxClients 200
    MaxRequestsPerChild 1000
</IfModule>
Henüz sabah olduğu için sitelerde trafik yok, o yüzden test edemedim sorunu çözüp çözmediğini. Sizce MaxClients değerini yükseltmek çözüm olabilir mi? Daha başka ne yapabilirim?

Teşekkürler yardımlar için..
Alıntı ile Cevapla
  #6  
Okunmamış 07-10-2008, 09:47:16
Coşkun Çetin - ait Kullanıcı Resmi (Avatar)
Administrator
 
Üyelik Tarihi: 25-06-2005
Mesajlar: 9.089
Feedback Score: 318 Olumlu
Standart

Önce my.cnf 'u ayarlayıp durumu kontrol edlim 1-2 gün mysql 'u takip edin performans ve daha az cpu kullanması açısından.

bunları my.cnf olarak Kullanın 2 gün kontrol edin ve tekrar o script 'i calıştırıp çıktıları buraya yapıştırın.

Kod:
[mysqld]
skip-name-resolve
local-infile=0
safe-show-database
back_log = 50
skip-innodb
max_connections = 200
long_query_time = 4
key_buffer = 128M
max_allowed_packet = 30M
myisam_sort_buffer_size = 64M
table_cache = 400
tmp_table_size = 128M
query_cache_type = 1
query_cache_size = 7M
query_cache_limit = 6M
query_prealloc_size = 262144
query_alloc_block_size = 65536
transaction_alloc_block_size = 8192
transaction_prealloc_size = 4096
max_write_lock_count = 16
thread_cache_size = 128
log-queries-not-using-indexes
join_buffer_size = 3M
read_buffer_size = 2M
sort_buffer_size = 2M
read_rnd_buffer_size = 256K
wait_timeout = 30
connect_timeout = 30
interactive_timeout= 30
table_lock_wait_timeout = 30
old-passwords = 1
low_priority_updates = 1
concurrent_insert=2
default-storage-engine = MyISAM


#required unique id between 1 and 2^32 - 1
server-id       = 1


[mysql]
no-auto-rehash


[mysqldump]
quick
quote-names
max_allowed_packet = 1000M


[myisamchk]
tmpdir=/temp
key_buffer = 64M
sort_buffer_size = 64M
read_buffer = 16M
write_buffer = 16M


[mysqlhotcopy]
interactive-timeout
Alıntı ile Cevapla
  #7  
Okunmamış 07-10-2008, 10:10:19
Üyeliği durduruldu
 
Üyelik Tarihi: 14-07-2005
Yaş: 46
Mesajlar: 120
Feedback Score: 6 Olumlu
Standart

Teşekkürler, 2 gün sonra yeni durum hakkında bilgi veririm.
Alıntı ile Cevapla
  #8  
Okunmamış 09-10-2008, 09:05:25
Coşkun Çetin - ait Kullanıcı Resmi (Avatar)
Administrator
 
Üyelik Tarihi: 25-06-2005
Mesajlar: 9.089
Feedback Score: 318 Olumlu
Standart

Son durum nedir. ?
Alıntı ile Cevapla
  #9  
Okunmamış 10-10-2008, 09:50:59
Üyeliği durduruldu
 
Üyelik Tarihi: 14-07-2005
Yaş: 46
Mesajlar: 120
Feedback Score: 6 Olumlu
Standart

Merhaba,
httpd.conf dosyasını eski haline alıp mysql değişikliklerini yaptım fakat aynı gün içinde tekrar kapanmalar olunca log dosyasını incelediğimde yine max client error verdiğini gördüm.
Bunun üzerine httpd.conf dosyasını
Kod:
Timeout 20
<IfModule prefork.c>
    StartServers 10
    MinSpareServers 30
    MaxSpareServers 50
    ServerLimit 256
    MaxClients 200
    MaxRequestsPerChild 1000
</IfModule>
şeklinde ayarladım.
My.cnf dosyasını httpd.conf dosyasını test edebilmek için pek değiştirmedim sadece şu bi kaç satırı ekledim;
Kod:
[mysqld]
set-variable = max_connections=500
safe-show-database
table_cache = 340
query_cache_size = 8M
thread_cache_size = 4
İki gündür kapanmadı neyseki. Load değerleri 1-2 civarında geziniyor en yoğun zamanlarda. Max client error hatasıda artık yok.
Yeni mysql raporu şu şekilde;
Kod:
Server has been running for over 48hrs.
It should be safe to follow these recommendations
To find out more information on how each of these
runtime variables effects performance visit:
http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html
Visit http://www.mysql.com/products/enterprise/advisors.html
for info about MySQL's Enterprise Monitoring and Advisory Service
SLOW QUERIES
The slow query log is NOT enabled.
Current long_query_time = 10 sec.
You have 1 out of 13390150 that take longer than 10 sec. to complete
Your long_query_time may be too high, I typically set this under 5 sec.
BINARY UPDATE LOG
The binary update log is NOT enabled.
You will not be able to do point in time recovery
See http://dev.mysql.com/doc/refman/5.0/en/point-in-time-recovery.html
WORKER THREADS
Current thread_cache_size = 4
Current threads_cached = 3
Current threads_per_sec = 0
Historic threads_per_sec = 0
Your thread_cache_size is fine
MAX CONNECTIONS
Current max_connections = 500
Current threads_connected = 1
Historic max_used_connections = 34
The number of used connections is 6% of the configured maximum.
You are using less than 10% of your configured max_connections.
Lowering max_connections could help to avoid an over-allocation of memory
See "MEMORY USAGE" section to make sure you are not over-allocating
MEMORY USAGE
Max Memory Ever Allocated : 117 M
Configured Max Per-thread Buffers : 1 G
Configured Max Global Buffers : 25 M
Configured Max Memory Limit : 1 G
Physical Memory : 1.97 G
Max memory limit seem to be within acceptable norms
KEY BUFFER
Current MyISAM index space = 17 M
Current key_buffer_size = 7 M
Key cache miss rate is 1 : 8664
Key buffer fill ratio = 62.00 %
Your key_buffer_size seems to be fine
QUERY CACHE
Query cache is enabled
Current query_cache_size = 8 M
Current query_cache_used = 4 M
Current query_cache_limit = 1 M
Current Query cache Memory fill ratio = 53.89 %
Current query_cache_min_res_unit = 4 K
MySQL won't cache query results that are larger than query_cache_limit in size
SORT OPERATIONS
Current sort_buffer_size = 2 M
Current read_rnd_buffer_size = 256 K
Sort buffer seems to be fine
JOINS
Current join_buffer_size = 132.00 K
You have had 170 queries where a join could not use an index properly
You have had 1 joins without keys that check for key usage after each row
You should enable "log-queries-not-using-indexes"
Then look for non indexed joins in the slow query log.
If you are unable to optimize your queries you may want to increase your
join_buffer_size to accommodate larger joins in one pass.
Note! This script will still suggest raising the join_buffer_size when
ANY joins not using indexes are found.
OPEN FILES LIMIT
Current open_files_limit = 2500 files
The open_files_limit should typically be set to at least 2x-3x
that of table_cache if you have heavy MyISAM usage.
Your open_files_limit value seems to be fine
TABLE CACHE
Current table_cache value = 340 tables
You have a total of 326 tables
You have 340 open tables.
Current table_cache hit rate is 21%, while 100% of your table cache is in use
You should probably increase your table_cache
TEMP TABLES
Current max_heap_table_size = 16 M
Current tmp_table_size = 32 M
Of 1541315 temp tables, 20% were created on disk
Effective in-memory tmp_table_size is limited to max_heap_table_size.
Created disk tmp tables ratio seems fine
TABLE SCANS
Current read_buffer_size = 128 K
Current table scan ratio = 1204 : 1
read_buffer_size seems to be fine
TABLE LOCKING
Current Lock Wait ratio = 1 : 96
You may benefit from selective use of InnoDB.
If you have long running SELECT's against MyISAM tables and perform
frequent updates consider setting 'low_priority_updates=1'
If you have a high concurrency of inserts on Dynamic row-length tables
consider setting 'concurrent_insert=2'.
Alıntı ile Cevapla
Cevapla


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 Kapalı
Pingbacks are Kapalı
Refbacks are Açık



Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 11:08:01.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.