PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : DB einspielen und Suchindex erstellen auf vServer langsam



belinea
14.06.2004, 11:24
Ich habe mein Forum dieses Wochenende auf einen vServer umgezogen. Nun habe ich gemerkt, dass das Einspielen eines MySQL Dumps, das Neuerstellen eines Suchindex oder das Neuerstellen von Image-Thumbnails sehr lange dauert. 18MB DB einspielen dauert schon einige Minuten.

Ist das ein Nebeneffekt eines vServers, weil sich eben sehr viele Kunden einen Server teilen müssen und nicht jeder den Rechner zu 100% auslasten darf oder ist da vielleicht was falsch konfiguriert?

Odysseus
14.06.2004, 13:12
Wenn deine Datenbank 18 MB groß ist, schätze ich mal, dass etwa 20.000 - 30.000 Beiträge existieren. Eine Indizierung dieser Beiträge sollte in max. zwei Stunden machbar sein.

Wie schnell ist denn das Forum an sich auf deinem neuen vServer? Ist die LEistung zufriedenstellend? Es wäre ungewöhnlich, wenn Shell-Befehle signifikant langsamer laufen als der normale Betrieb.

belinea
14.06.2004, 14:39
Wie schnell ist denn das Forum an sich auf deinem neuen vServer? Ist die LEistung zufriedenstellend? Es wäre ungewöhnlich, wenn Shell-Befehle signifikant langsamer laufen als der normale Betrieb.Das Forum läuft pfeilschnell und ich bin super zufrieden. Ich bin nur verwundert, dass das Einspielen der Datenbank über die Shell solange dauert. Hier auf meinem lokalen Testserver dauert das ca. 3 Sekunden (unter Windows). Auf dem vServer mehrere Minuten (habe nicht genau geschaut wie lange es gedauert hat).

Mir ist jedoch aufgefallen das JEDER SQL Befehl in /var/log/mysql.log protokolliert wird. Das File wächst wäschst und wächst. Irgendwann ist mein Plattenspeicher nur durch dieses Logfile voll. Muss mal schauen ob man das abschalten kann.

Odysseus
14.06.2004, 14:52
Auweia ... poste mal deine Datei /etc/my.cnf hier rein.
Ich trau mich wetten, dass es da folgende Zeile gibt:


log-bin

Das kannst du gleich mal rausnehmen, indem du ein # davor setzt.
Die Funktion ist nur interessant, wenn du Replikation betreibst, d.h. wenn du zwei MySQL server aufgestellt hast, die sich untereinander abgleichen müssen.

belinea
14.06.2004, 15:11
log-bin ist bereits deaktiviert (ist eine Route davor)

Habe jetzt erstmal das Schreiben des Logfiles deaktiviert.

Wenn ich während dem Erstellen eines Dumps in der Shell "PS AUX" eingebe, so steht bei dem Dump Prozess unter %CPU so ca 3% - 7%. Ich habe jetzt allerdings keine Ahnung ob das nun normal ist, dass der Befehl mysqldump nicht mehr Rechenleistung nutzt.

Odysseus
14.06.2004, 15:30
Nö, das passt schon.
Aber poste doch mal deine my.cnf

belinea
14.06.2004, 16:03
Ok, hier die Dtaei my.cnf:


# You can copy this to one of:
# /etc/mysql/my.cnf to set global options,
# mysql-data-dir/my.cnf to set server-specific options (in this
# installation this directory is /var/lib/mysql) or
# ~/.my.cnf to set user-specific options.
#
# One can use all long options that the program supports.
# Run the program with --help to get a list of available options
# This will be passed to all mysql clients
[client]
#password = my_password
port = 3306
socket = /var/run/mysqld/mysqld.sock

# Here is entries for some specific programs
# The following values assume you have at least 32M ram

[safe_mysqld]
err-log = /var/log/mysql/mysql.err

[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
#
# You can also put it into /var/log/mysql/mysql.log but I leave it in /var/log
# for backward compatibility. Both location gets rotated by the cronjob.
#log = /var/log/mysql/mysql.log
#log = /var/log/mysql.log
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
language = /usr/share/mysql/english
skip-locking
#
# The skip-networkin option will no longer be set via debconf menu.
# You have to manually change it if you want networking i.e. the server
# listening on port 3306. The default is "disable" - for security reasons.
skip-networking
set-variable = key_buffer=16M
set-variable = max_allowed_packet=1M
set-variable = thread_stack=128K
#
# Here you can see queries with especially long duration
#log-slow-queries = /var/log/mysql/mysql-slow.log
#
# The following can be used as easy to replay backup logs or for replication
#server-id = 1
#log-bin = /var/log/mysql/mysql-bin.log
#binlog-do-db = include_database_name
#binlog-ignore-db = include_database_name
#
# Read the manual if you want to enable InnoDB!
skip-innodb

[mysqldump]
quick
set-variable = max_allowed_packet=1M

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

[isamchk]
set-variable = key_buffer=16M

belinea
14.06.2004, 18:26
Ich glaube, dass der MySQL-Server nicht richtig läuft. Ich bekomme andauernd Fehlermeldungen dass kein Speicher mehr zur Verfügung steht.

fork() failed cannot allocate memory

Diese Meldung kommt dann bei verschiedenen Programmen die etwas ausführen wollen (sendmail zum Beispiel). Teilweise komme ich dann nicht mal mehr SSH darauf, weil anscheinend nicht mal SSHD genug Speicher hat um anständig seinen Dienst zu verrichten. :confused:

Odysseus
14.06.2004, 19:04
Öhm, das passt ja hinten und vorne nicht...
Mach mal ein Backup der Datei und ändere sie in etwa so im Bereich [mysqld]:


[mysqld]
max_connections = 150
key_buffer = 4M
myisam_sort_buffer_size = 16M
join_buffer_size = 1M
read_buffer_size = 1M
sort_buffer_size = 1M
table_cache = 256
thread_cache_size = 16
wait_timeout = 180
connect_timeout = 10
max_allowed_packet = 2M
max_connect_errors = 10
query_cache_limit = 1M
query_cache_size = 4M
query_cache_type = 1

belinea
14.06.2004, 19:14
Super vielen Dank. Das werde ich gleich mal ausprobieren.

belinea
14.06.2004, 21:55
Mit deinen Einstellungen starte der MySQL-Server gar nicht


/usr/sbin/mysqld: unrecognized option `--max_connections=150'
/usr/sbin/mysqld Ver 3.23.49 for pc-linux-gnu on i686Kann das vielleicht sein, dass die Settings die du mir gegeben erst ab MySQL Version 4 funktionieren?

Odysseus
15.06.2004, 11:24
Wenn du MySQL benutzen willst, dann entferne die Zeilen, in denen es um den Query Cache geht (qcache).
Die max_connections müsste er eigentlich nehmen ... aber kannst du natürlich auch rausnhemen. Dann wird der default Wert (100) genommen.

pa127
15.02.2005, 07:56
welche auswirkung hat wait timeout?
ich hab bei mir ab und zu einige Prozesse drin die 500 Sec und länger laufen. und nur sleep dransteht und als SQL befehl --- dransteht. (in PHPMYADMIN) Ich will das diese Prozesse automatisch gekillt werden aber nicht die darauffolgenden sonder nur die die alles blokieren.

samjo
15.02.2005, 09:00
[mysqldump]
quick
set-variable = max_allowed_packet=1M
Könnte das nicht vielleicht daran liegen?
Ich kann zB auf meinen Webhost nur Pakete von max. 2MB hochschieben und muß dann ein entsprechendes Backup immer aufsplitten.

Reimer
15.02.2005, 12:23
Probier es mal über http://www.ozerov.de/bigdump.php - Ist zwar keine schöne Lösung, aber wenn es funktioniert hat es seinen Sinn erfüllt.

Odysseus
15.02.2005, 14:47
welche auswirkung hat wait timeout?
ich hab bei mir ab und zu einige Prozesse drin die 500 Sec und länger laufen. und nur sleep dransteht und als SQL befehl --- dransteht. (in PHPMYADMIN) Ich will das diese Prozesse automatisch gekillt werden aber nicht die darauffolgenden sonder nur die die alles blokieren.

60 Sekunden sollten reichen.