| 

.NET C# Java Javascript Exception

2
Hallo,

da im Netz verschiedene Ansätze existieren, hier nochmal die Frage an die Experten:

Ich möchte die Arbeitsspeicher-Aufteilung meines Server (SUSE 12.1, 16GB RAM, klassische CMS Anwendungen) optimieren.

Dazu setze ich für das System (inkl. ProFTP) rund 500MB an und den Apachen (Serverlimit 200) mit 10 GB (durchschnittlich 50MB ea. lt. "top"). Dazu habe ich eAccelerator installiert, der das auf 1GB gesetzte Shared Memory (via SHMMAX) voll ausnutzt.

Keine größeren Gedankenfehler vorrausgesetzt frage ich mich nun, was die entscheidenen Parameter zur Berechnung des Speicherbedarfs von MySQL sind.

Hier die [mysqld] Sektion aus der my.cnf:

port            = 3306
socket = /var/run/mysql/mysql.sock
skip-external-locking
key_buffer_size = 384M
max_allowed_packet = 1M
table_open_cache = 512
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
# Try number of CPU's*2 for thread_concurrency
thread_concurrency = 8


(max_connections = 151)

Nutzt Apache / MySQL eigentlich auch den Shared Memory?

Vielen Dank für eine Hilfestellung oder eine universelle Rechenformel ;-)
06.07.2012
doublem 683 1 1 9
1 Antwort
0
Die Frage habe ich auch schonmal gestellt. Du kannst dir mal phpmyadmin installieren und dir den Status geben lassen. Es gibt aber auch Skripte die das machen: https://launchpad.net/mysql-tuning-primer oder http://webyog.com/. Das erste habe ich mal ausprobiert und meine my.cnf etwas verändert:

skip-external-locking
skip-locking
key_buffer = 2M
max_allowed_packet = 1M
table_cache = 4000
thread_stack = 64K
thread_cache_size = 8
sort_buffer_size = 64K
join_buffer_size = 512K
net_buffer_length = 2K
read_buffer_size = 256K
query_cache_limit = 4M
query_cache_size = 60M
query_cache_limit = 4M
query_cache_type = 1
key_buffer_size = 128K
open_files_limit = 3000

[isamchk]
key_buffer = 4M
sort_buffer_size = 32M
read_buffer = 8M
write_buffer = 8M

tmp_table_size=64M
max_heap_table_size=64M
thread_cache_size=64M

myisam_max_sort_file_size=4G
key_buffer_size=128M
read_buffer_size=64K
read_rnd_buffer_size=256K
sort_buffer_size=1M

innodb_flush_method=O_DIRECT
innodb_additional_mem_pool_size=64M
innodb_flush_log_at_trx_commit=0
innodb_log_buffer_size=8M
innodb_buffer_pool_size=64M
innodb_log_file_size=512M
innodb_thread_concurrency=8
memlock
innodb_file_per_table

Meine Erfahrung nach ist ein KVM Server besser, weil man da mehr am Linux-Kernel dran ist. Die VM sind aber billiger. Damit du langsame queries finden kannst würde ich log_slow_queries aktivieren:

log_slow_queries = mysql-slow.log
long_query_time = 3
log-queries-not-using-indexes

Deine query_cache_size = 32M finde ich ziemlich niedrig, meiner ist doppelt so groß. Deine anderen Werte wiederum find ich zu hoch. Da habe ich regelmäßig weniger. Außerdem würde ich Apache deinstallieren und ein anderen webserver nehmen zum beispiel lighttpd.
07.07.2012
Rekursion 47 8

Stelle deine Mysql-Frage jetzt!