Überwachung des Server

iceget

Member
Hallo liebe Community,

folgendes Problem:

Wenn ich jetzt einige Domains anlege, fährt mir der Server auf hochlast rauf und schreibt die ganze Zeit: There is already an instance of server.php running. Exiting.

Oder auch das noch ein Lockfile existiert. Das Lockfile muss ich immer manuell löschen, und erst dann arbeitet er mir die Warteschlange wieder ab..

Warum ist das so? Wie kann ich das verhinden?

Danke!

glg Markus
 

Till

Administrator
Da wird irgendwas mit php nicht stimen,so dass das ispconfig server.php Script hängt oder es wurden Funktionen in php deaktiviert die ispconfig benötigt. Was ist denn das letzte was Du im ispconfig.log oder cron.log siehst wenn er hängt (Loglevel vorher auf debug stellen).
 

iceget

Member
Hi Till, das hab ich in der cron.log gefunden:
PHP Fatal error: Out of memory (allocated 5517344768) (tried to allocate 357552752 bytes) in /usr/local/ispconfig/server/lib/classes/db_mysql.inc.php on line 110
PHP Fatal error: Out of memory (allocated 5758255104) (tried to allocate 349819078 bytes) in /usr/local/ispconfig/server/lib/classes/db_mysql.inc.php on line 77
PHP Fatal error: Out of memory (allocated 5646319616) (tried to allocate 343134027 bytes) in /usr/local/ispconfig/server/lib/classes/db_mysql.inc.php on line 77
PHP Fatal error: Out of memory (allocated 4596432896) (tried to allocate 342125868 bytes) in /usr/local/ispconfig/server/lib/app.inc.php on line 154
PHP Fatal error: Out of memory (allocated 5234229248) (tried to allocate 339260282 bytes) in /usr/local/ispconfig/server/lib/classes/db_mysql.inc.php on line 110
PHP Fatal error: Out of memory (allocated 5804130304) (tried to allocate 332656805 bytes) in /usr/local/ispconfig/server/lib/app.inc.php on line 133
PHP Fatal error: Out of memory (allocated 5072748544) (tried to allocate 325928644 bytes) in /usr/local/ispconfig/server/lib/classes/db_mysql.inc.php on line 110
PHP Fatal error: Out of memory (allocated 5410127872) (tried to allocate 327030625 bytes) in /usr/local/ispconfig/server/lib/classes/db_mysql.inc.php on line 77
PHP Fatal error: Out of memory (allocated 4842586112) (tried to allocate 307450999 bytes) in /usr/local/ispconfig/server/lib/classes/db_mysql.inc.php on line 110


Wo kann ich für den ISP-Config Server das Memory Limit erhöhen? Warum ist das so?


Ich hab den Server komplett frisch nach der perfect setup Anleitung installiert, ...

Danke!

glg Markus
 
Zuletzt bearbeitet:

iceget

Member
Hi Till,

hab vorm neustart des Servers die Logs umbenannt (damit der Server neue erstellt).

Folgendes ist dabei raus gekommen (nach dem Neustart):
01.05.2012-10:00 - DEBUG - Set Lock: /usr/local/ispconfig/server/temp/.ispconfig_lock
01.05.2012-10:00 - DEBUG - No Updated records found, starting only the core.
01.05.2012-10:00 - WARNING - DB::connect()-> mysql_select_db MySQL server has gone away
01.05.2012-10:00 - WARNING - DB::connect()-> mysql_select_db MySQL server has gone away
01.05.2012-10:00 - WARNING - DB::connect()-> mysql_select_db MySQL server has gone away
01.05.2012-10:00 - WARNING - DB::connect()-> mysql_select_db MySQL server has gone away
01.05.2012-10:00 - WARNING - DB::connect()-> mysql_select_db MySQL server has gone away
01.05.2012-10:00 - WARNING - DB::connect()-> mysql_select_db MySQL server has gone away
.
..
... hier gehts zirka noch 9000 mal gleich weiter ...
..
.
01.05.2012-10:03 - WARNING - DB::connect()-> mysql_select_db MySQL server has gone away
01.05.2012-10:03 - WARNING - DB::connect()-> mysql_select_db MySQL server has gone away
01.05.2012-10:03 - WARNING - DB::connect()-> mysql_select_db MySQL server has gone away
01.05.2012-10:03 - WARNING - DB::connect()-> mysql_select_db MySQL server has gone away
01.05.2012-10:03 - WARNING - DB::connect()-> mysql_select_db MySQL server has gone away
01.05.2012-10:03 - WARNING - DB::connect()-> mysql_select_db MySQL server has gone away
01.05.2012-10:03 - WARNING - DB::connect()-> mysql_select_db MySQL server has gone away
01.05.2012-10:03 - WARNING - DB::connect()-> mysql_select_db MySQL server has gone away
01.05.2012-10:03 - WARNING - DB::connect()-> mysql_select_db MySQL server has gone away
01.05.2012-10:03 - WARNING - DB::connect()-> mysql_select_db MySQL server has gone away
01.05.2012-10:03 - WARNING - DB::connect()-> mysql_select_db MySQL server has gone away
01.05.2012-10:03 - WARNING - DB::connect()-> mysql_select_db MySQL server has gone away
01.05.2012-10:07 - DEBUG - There is already a lockfile set. Waiting another 10 seconds...
01.05.2012-10:07 - DEBUG - There is already a lockfile set. Waiting another 10 seconds...
01.05.2012-10:07 - DEBUG - There is already a lockfile set. Waiting another 10 seconds...
01.05.2012-10:07 - DEBUG - There is already a lockfile set. Waiting another 10 seconds...
01.05.2012-10:07 - DEBUG - There is already a lockfile set. Waiting another 10 seconds...
01.05.2012-10:07 - DEBUG - There is already a lockfile set. Waiting another 10 seconds...
01.05.2012-10:08 - DEBUG - There is already an instance of server.php running. Exiting.
01.05.2012-10:08 - DEBUG - There is already a lockfile set. Waiting another 10 seconds...
01.05.2012-10:08 - DEBUG - There is already a lockfile set. Waiting another 10 seconds...
01.05.2012-10:08 - DEBUG - There is already a lockfile set. Waiting another 10 seconds...
01.05.2012-10:08 - DEBUG - There is already a lockfile set. Waiting another 10 seconds...
01.05.2012-10:08 - DEBUG - There is already a lockfile set. Waiting another 10 seconds...
01.05.2012-10:08 - DEBUG - There is already a lockfile set. Waiting another 10 seconds...
01.05.2012-10:09 - DEBUG - There is already an instance of server.php running. Exiting.
01.05.2012-10:09 - DEBUG - There is already a lockfile set. Waiting another 10 seconds...


Nachdem ich das Lockfile gelöscht habe, gehts so weiter im Log:
01.05.2012-10:11 - DEBUG - Set Lock: /usr/local/ispconfig/server/temp/.ispconfig_lock
01.05.2012-10:11 - DEBUG - No Updated records found, starting only the core.
01.05.2012-10:11 - DEBUG - Remove Lock: /usr/local/ispconfig/server/temp/.ispconfig_lock


Wieso ist bei mir der Load Average so hoch, aber die CPU eigentlich nicht belastet? Im XenServer Performance Log sind wir mit der CPU Auslastung auf zirka 25%?!
top - 12:18:54 up 13 min, 1 user, load average: 54.88, 31.82, 14.73
Tasks: 458 total, 1 running, 457 sleeping, 0 stopped, 0 zombie
Cpu0 : 4.8%us, 0.0%sy, 0.0%ni, 0.0%id, 95.2%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu1 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu2 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu3 : 0.0%us, 0.8%sy, 0.0%ni, 82.6%id, 16.5%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 5776116k total, 4483460k used, 1292656k free, 311632k buffers
Swap: 901112k total, 0k used, 901112k free, 1705384k cached
 
Zuletzt bearbeitet:

Till

Administrator
Zu DEine Posts:

1) Out of memory: Bei Debian und Ubuntu ist die php.ini /etc/php5/cli/php.ini. bei anderen Distributionen wird die gleiche php.ini wie für cgi verwendet.

2) Zu den mysql Fehlern: Hast Du vielleicht ein zu kurzes mysql timeout in der my.cnf gesetzt?

Zu 3) Load average bedeutet ja dass ein Prozess warten muss, dies kann z.B. auch ein warten auf Festplattenoperationen sein. Dies kann insbesondere bei virtualisierten Systemen vorkommen wenn die virtuellen Maschinen mehr Festplattenzugriffe erzeugen als diese durchführen können.
 

iceget

Member
Hallo Till,
zu 1): root@ns1:/etc/php5/cli# cat -n php.ini | grep 'memory_limit'
461 memory_limit = -1

zu 2): Ich musste die max_user_connections rauf schrauben, da sonst keine Website mehr funktioniert (sind jetzt auch einige Domains am Server)
/etc/mysql/my.cnf:
# The MySQL database server configuration file.
#
# You can copy this to one of:
# - "/etc/mysql/my.cnf" to set global options,
# - "~/.my.cnf" to set user-specific options.
#
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
#
# For explanations see
# MySQL :: MySQL 5.5 Reference Manual :: 5.1.3 Server System Variables
# This will be passed to all mysql clients
# It has been reported that passwords should be enclosed with ticks/quotes
# escpecially if they contain "#" chars...
# Remember to edit /etc/mysql/debian.cnf when changing the socket location.
[client]
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
# This was formally known as [safe_mysqld]. Both versions are currently parsed.
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0
[mysqld]
#
# * Basic Settings
#
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 = 192K
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.
# As of 5.1 you can enable the log at runtime!
#general_log_file = /var/log/mysql/mysql.log
#general_log = 1
#
# Error logging goes to syslog due to /etc/mysql/conf.d/mysqld_safe_syslog.cnf.
#
# 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
#
# * 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!
#
# * 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
# setting max_connections higher
max_connections = 500
max_user_connections = 500
[mysqldump]
quick
quote-names
max_allowed_packet = 16M
[mysql]
#no-auto-rehash # faster start of mysql but no tab completition
[isamchk]
key_buffer = 16M
#
# * 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/

zu 3: ich habe dieser VM über 5GB RAM gegeben, und im physikalischen System läuft ein HW-RAID Controller mit RAID 10 mit 4 x 200GB SAS Platten,
kanns wirklich an dem liegen? In der Auslastung (übersicht von XenCenter) passt alles (Auslastungstechnisch) bei allen drei virtuellen Servern.
Nur bei dem einen geht die Load rauf (im virtuellen System direkt)
Wie kann ich da abhilfe verschaffen? Datenbankserver und Webserver auslagern? Obwohl die CPU Last lt. dem Center unter 10% ist?
Wenn ich mir jetzt noch einen Server schnappe und diese dann intern verbinde, ist das so okay wenn ich die gesamten vServer intern Anbinde und dann
vom WebServer aus den MySQL mit einer internen IP-Anspreche?
Was wäre Sinnvoller auszulagern? Gibts da ein Setup damit ich dann trotzdem ISPConfig weiter verwenden kann?
Soll ich gleich auf MySQL-Cluster zurückgreifen oder macht es mehr sinn einfach mehrere Systeme mysql1, mysql2, web1, web2, mail1, mail2 zu verwenden?

seit meinem letzten Beitrag am 01.05 ist die ISPCONFIG Log (die unkomprimierte auf 3,5gb) und die komprimierte auf 1,5gb), ...
03.05.2012-08:07 - DEBUG - There is already a lockfile set. Waiting another 10 seconds...
03.05.2012-08:07 - DEBUG - There is already a lockfile set. Waiting another 10 seconds...
03.05.2012-08:07 - DEBUG - There is already a lockfile set. Waiting another 10 seconds...
03.05.2012-08:07 - DEBUG - There is already a lockfile set. Waiting another 10 seconds...
03.05.2012-08:07 - DEBUG - There is already a lockfile set. Waiting another 10 seconds...
03.05.2012-08:08 - DEBUG - There is already an instance of server.php running. Exiting.
03.05.2012-08:08 - DEBUG - There is already a lockfile set. Waiting another 10 seconds...
03.05.2012-08:08 - DEBUG - There is already a lockfile set. Waiting another 10 seconds...
03.05.2012-08:08 - DEBUG - There is already a lockfile set. Waiting another 10 seconds...
03.05.2012-08:08 - DEBUG - There is already a lockfile set. Waiting another 10 seconds...


Komisch, jetzt hab ich mal via tail -f länger die Datei angeschaut und da fährt die Konsole vol nach unten weiter mit Einträgen bzw. logs wie diesen:
\\\\\\\\\\\\\\\\n(delivery temporarily suspended: host mta6.am0.yahoodns.net[98.137.54.238] refused to talk to me: 421 4.7.1 [TS03] All messages from 176.9.101.220 will be permanently deferred; Retrying will NOT succeed. See

Hiernochmal ein tail -f auszug aus der ISPConfig Log:
http://raving.at/tailf.JPG

Es sind wie gesagt zirka 250 Domains eingerichtet, davon sind zirka 1500 zonen Files im System sowie 780 Spamfilterbenutzer und über 600 Cronjobs die alle 10 Minuten ein lokales PHP-Script ausführen.

Wie kann ich das ganze verhinden bzw. die Last besser Aufteilen? Was wäre Sinnvoll?

Kann ich das mit ISPConfig 3 irgendwie machen? z.B. MySQL1, MySQL2, MySQL3, Web1, Web2, Web3, Mail1, Mail2, Mail3 und diese eben intern via LAN vernetze und dann die MySQL Server im internen Netz laufen lasse?

Oder soll ich den Servern wirklich alle externe IPs geben? Wie wäre das am besten zu lösen?

Wäre ein Cluster anzudenken oder eher nicht?

Wenn ich das ganze virtuell mache (was ich vorhabe) gibts eine Distribution die sich als Firewall perfekt macht? Damit ich dann wirklich nur den MySQL Port drüber lass bzw. Apache Port usw. Das eben diese Firewall vMachine die offizielle IP hat, und einfach intern NATtet?

Macht das Sinn? Oder soll ich die Maschine immer mit allen Diensten (nur mit der internen Firewall von ISPConfig) Online lassen?

Ich möchte das System weitergehen sicherer und performanter machen, hast Du vielleicht ein paar Ideen bzw. wie würdest Du das ganze aufziehen?
 
Zuletzt bearbeitet:

Till

Administrator
1) Dann weiß ich auch nicht woran es lag, vielleicht hat sich das script wg. mysql aufgehängt.
2) Die connections hochsetzten ist ok, das ist bei jedem aktiveren System notwendig.
3) Ist denn nur die load hoch oder reagieren die Seiten langsam? Wenn 600 cronjobs gleichzeitig straten kann das unter Umständen auch die Load erklären.
 

iceget

Member
Hallo Till,

danke ich glaub ich hab den Fehler gefunden.

Die Cronjobs werden alle nach 10 Minuten ausgeführt...

Nun habe ich aber alle Cronjs via ISPConfig Webinterface gelöscht, und trotzdem sehe ich überall im htop (nach einem reboot des server) WGET -o (genau so wie ich es eingestell hab).

Wie kann ich die wirklich löschen?

Ich habe alle Cronjobs entfernt, aber trotzdem hat er mir unter cron.d die web_xx_Crons angelegt.

Danke!

glg Markus
 

Werbung

Top