Skocz do zawartości
Zaloguj się, aby obserwować  
fudi

Najoptymalniejszy my.cnf

Polecane posty

Witam.

 

Chciałem prosić bardziej obeznanych forumowiczów o pomoc w ustawieniu pliku my.cnf (zależy mi na maksymalnej wydajności).

 

Otóż zakupiłem serwer VPS o następujących parametrach:

 

  • 10 GB dysku twardego
  • 100 GB transferu miesięcznego
  • 256 MB - gwarantowany RAM
  • 512 MB - maksymalny RAM
  • Procesor - 1 Ghz
  • system operacyjny Linux: Debian Lenny 5.0

Poszukuję najoptymalniejszej konfiguracji pliku my.cnf w założeniu iż:

 

- do bazy połączonych jest max'ymalnie 100 userów ( w jednej chwili !)

- jeden user przesyła do bazy ~20 zapytań/minutę

- jeden user odbiera z bazy ~20 zapytań/minutę ( jest to odpowiedź bazy na zapytania podane wyżej)

- długość zapytania max 50 znaków

 

Załączam przykładowy plik my.cnf może pomoże w doborze konfiguracji.

 

 

[client]

port = 3306

socket = /var/run/mysqld/mysqld.sock

 

# This was formally known as [safe_mysqld]. Both versions are currently parsed.

[mysqld_safe]

socket = /var/run/mysqld/mysqld.sock

nice = 0

 

[mysqld]

user = mysql

pid-file = /var/run/mysqld/mysqld.pid

socket = /var/run/mysqld/mysqld.sock

port = 3306

basedir = /usr

datadir = /var/lib/mysql

tmpdir = /tmp

language = /usr/share/mysql/english

skip-external-locking

#

# Instead of skip-networking the default is now to listen only on

# localhost which is more compatible and is not less secure.

bind-address = 127.0.0.1

#

# * Fine Tuning

#

key_buffer = 16M

max_allowed_packet = 16M

thread_stack = 128K

thread_cache_size = 8

# This replaces the startup script and checks MyISAM tables if needed

# the first time they are touched

myisam-recover = BACKUP

#max_connections = 100

#table_cache = 64

#thread_concurrency = 10

#

# * Query Cache Configuration

#

query_cache_limit = 1M

query_cache_size = 16M

#

# * Logging and Replication

#

# Both location gets rotated by the cronjob.

# Be aware that this log type is a performance killer.

#log = /var/log/mysql/mysql.log

#

# Error logging goes to syslog. This is a Debian improvement ;)

#

# Here you can see queries with especially long duration

#log_slow_queries = /var/log/mysql/mysql-slow.log

#long_query_time = 2

#log-queries-not-using-indexes

#

# The following can be used as easy to replay backup logs or for replication.

# note: if you are setting up a replication slave, see README.Debian about

# other settings you may need to change.

#server-id = 1

#log_bin = /var/log/mysql/mysql-bin.log

expire_logs_days = 10

max_binlog_size = 100M

#binlog_do_db = include_database_name

#binlog_ignore_db = include_database_name

#

# * BerkeleyDB

#

# Using BerkeleyDB is now discouraged as its support will cease in 5.1.12.

skip-bdb

#

# * InnoDB

#

# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.

# Read the manual for more InnoDB related options. There are many!

# You might want to disable InnoDB to shrink the mysqld process by circa 100MB.

#skip-innodb

#

# * Security Features

#

# Read the manual, too, if you want chroot!

# chroot = /var/lib/mysql/

#

# For generating SSL certificates I recommend the OpenSSL GUI "tinyca".

#

# ssl-ca=/etc/mysql/cacert.pem

# ssl-cert=/etc/mysql/server-cert.pem

# ssl-key=/etc/mysql/server-key.pem

 

 

 

[mysqldump]

quick

quote-names

max_allowed_packet = 16M

 

[mysql]

#no-auto-rehash # faster start of mysql but no tab completition

 

[isamchk]

key_buffer = 16M

 

#

# * NDB Cluster

#

# See /usr/share/doc/mysql-server-*/README.Debian for more information.

#

# The following configuration is read by the NDB Data Nodes (ndbd processes)

# not from the NDB Management Nodes (ndb_mgmd processes).

#

# [MYSQL_CLUSTER]

# ndb-connectstring=127.0.0.1

 

 

#

# * IMPORTANT: Additional settings that can override those from this file!

# The files must end with '.cnf', otherwise they'll be ignored.

#

!includedir /etc/mysql/conf.d/

 

 

Z góry serdecznie dziękuję za pomoc!

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość tom3kk

ciezko z gory okreslic jaki config bedzie dobry, to wymaga testow/obserwacji, nie ma regul na to...

 

sugeruje Ci zostawic domyslny plik konfiguracyjny z Debiana

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Jestem skory do testów tylko podając parametry miałem nadzieje iż dostanę wytyczne co zmienić żeby wykorzystać zasoby w 100% ;)

 

-A może orientujesz się jak można na bierzącoc dodawać hosty z których można się podłączyć pod mysql?

 

"Ale dane hosty nie wszytkie ;) "

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Na początek podziel wszystko na 2 i odhaszuj skip-innodb (o ile nie jest ci potrzebne). Także pamiętaj by używać preforka zamiast workera (apache). No i lekki tuning tegoż deamona plus optymalizacja php.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

skip-innodb - ok odhaszuję nie używam tego typu baz!

 

Natomiast:

Także pamiętaj by używać preforka zamiast workera (apache). No i lekki tuning tegoż deamona plus optymalizacja php.

 

Na tym serwerze jest zainstalowany TYLKO serwer mysql bez apache!

 

Podzielić przez dwa ok spróbuje!

 

Czekam na dalsze propozycje ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Przepraszam że piszę post pod postem ale nie mogłem go edytować :/

 

Za tą poradę:

 

skip-innodb

 

masz u mnie + zużycie mysql zpadło drastycznie dzięki tobie doczytałem że zwalania to 100MB pamięci.

 

Nadal nie mogę się wstrzelić z resztą wartości w my.cnf

 

Jest jakaś strona która opisuje dokładnie do czego służą, albo jak dobrać optymalne wartości ... nie ukrywam iż mam małe problemy z językiem angielskim ale maturę zdałem ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Spróbuj uzyć skryptów mysqltuner.pl i tuning-primer

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Może mi ktoś wytłumaczyć łopatologicznie do czego służą te komendy?

 

key_buffer = 5M

max_allowed_packet = 5M

thread_stack = 128K

thread_cache_size = 8

myisam-recover = BACKUP

max_connections = 100

#table_cache = 64

#thread_concurrency = 10

 

query_cache_limit = 1M

query_cache_size = 6M

 

[mysql]

no-auto-rehash

 

[isamchk]

key_buffer = 6M

 

 

P.S.

 

Oficjalna dokumentacja jest po angielsku i nie wszytko rozumiem ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

No to słownik w rękę i jedziemy, wątpię, że ktoś tu będzie siedział i tłumaczył ci takie coś. Nie wiesz co to max_connections? To naprawdę zastanawiam się co zrobiłeś na maturze

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

No to słownik w rękę i jedziemy, wątpię, że ktoś tu będzie siedział i tłumaczył ci takie coś. Nie wiesz co to max_connections? To naprawdę zastanawiam się co zrobiłeś na maturze

 

Może mi ktoś wytłumaczyć łopatologicznie do czego służą te komendy?

 

Nie prosiłem o dokładną translacje tylko wyjaśnienie zasady działania np.

 

max_connections - maksymalna ilość połączeń (w jednej chwili).

 

Nie bierz mnie za pierwszego lepszego debila ... jakoś skończyłem tą szkołę; bezproblemowo ;)

 

Po prostu ludzie na forum zajmują się mysql na bieżąco ... ja dopiero dzisiaj zacząłem zabawę.

 

Moją specjalizacją są aplikacje internetowe umiem użyć bazy mysql ale usiłuję go skonfigurować dlatego proszę forumowiczów o pomoc :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Po dłuższym namyśle inaczej sformułuję pytanie:

 

Czy te komendy:

 

key_buffer = 5M

query_cache_limit = 1M

query_cache_size = 6M

 

odwołują się do do wartości dla każdego usera osobno czy wszystkich na raz?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość tom3kk

nie sa per client, to wartosci dla wszystkich lacznie,

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

nie sa per client, to wartosci dla wszystkich lacznie

 

Dzięki ;)

 

Jak uważasz dobrze opisałem poszczególne komendy?!

 

 


[client]
port		= 3306
socket		= /var/run/mysqld/mysqld.sock

[mysqld_safe]
socket		= /var/run/mysqld/mysqld.sock
nice		= 0

[mysqld]
user		= mysql
pid-file	= /var/run/mysqld/mysqld.pid
socket		= /var/run/mysqld/mysqld.sock
port		= 3306
basedir		= /usr
datadir		= /var/lib/mysql
tmpdir		= /tmp
language	= /usr/share/mysql/polish
skip-external-locking	//zezwól na połączenie z zewnątrz | Nasłuchuj połączeń z zewnątrz

key_buffer		= 50M	//rozmiar bufora indexów dla wspólnych wątków
max_allowed_packet	= 10K //maxymalny rozmiar jednego pakietu
thread_stack		= 128K //rozmiar stosu dla każdego wątku
thread_cache_size	= 8 //jak wiele wątków powinien zatrzymać serwer do ponoenego użycia
myisam-recover		= BACKUP // Tryb magazynowania silnika myisam (Jeśli plik danych został zmieniony w trakcie odzyskiwania, zapisz kopię zapasową pliku)
max_connections 	= 100 //Maksymalna ilość jednocześnie połączonych klientów

query_cache_limit 	= 1M //Maxymalny rozmiar wyniku zapytania w cache
query_cache_size 	= 6M //Ilość pamięci przeznaczonych do buforowania wyników zapytania

skip-bdb	//omijanie baz typu bdb
skip-innodb	//omijanie baz typu innodb

//Ustawiamy polskie znaki!
character-sets-dir = /usr/share/mysql/charsets/
default-character-set = latin2

#log		= /var/log/mysql/mysql.log	//ogowanie do dziennika ogólnego zapytanie, które zawiera wpisy rejestru połączeń klientów
#log_slow_queries	= /var/log/mysql/mysql-slow.log	//logowanie długo wykonujących się zapytań
#long_query_time = 2	//czas wykonania po którym zapytanie jest uznane za "wolne"
#log-queries-not-using-indexes	//loguj "wolne" zapytania nie używające indexów

[mysqldump]
quick
quote-names
max_allowed_packet	= 1M

//Ustawiamy polskie znaki!
character-sets-dir = /usr/share/mysql/charsets/
default-character-set = latin2

[mysql]
no-auto-rehash

//Ustawiamy polskie znaki!
character-sets-dir = /usr/share/mysql/charsets/
default-character-set = latin2

[isamchk]
key_buffer		= 6M

!includedir /etc/mysql/conf.d/

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość tom3kk

ujdzie, szczerze to nie chce sie mi zagladac do dokumentacji po szczegoly i wczytywac we wszystko,

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

ujdzie, szczerze to nie chce sie mi zagladac do dokumentacji po szczegoly i wczytywac we wszystko,

 

Na zakończenie mam jeszcze jedno pytanie mianowicie:

 

Co to za moduł i za co odpowiada?

[isamchk]

key_buffer = 6M

(bo nie wiem jaką wartość ustawić :/

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość tom3kk

>> "Check, repair, manipulate and get statistics on MySQL tables."

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Thx temat do zamknięcia jutro przyznam Tobie punkty reputacji ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się

Zaloguj się, aby obserwować  

×