Sponsor-Board.de
Apache2 + MySQL Problem

+- Sponsor-Board.de (https://www.sponsor-board.de)
+-- Forum: Community (/forumdisplay.php?fid=56)
+--- Forum: Hilfe (/forumdisplay.php?fid=102)
+---- Forum: Linux-Server (/forumdisplay.php?fid=105)
+---- Thema: Apache2 + MySQL Problem (/showthread.php?tid=37333)


Apache2 + MySQL Problem - Kevv - 29.03.2013 13:41

Tag,

Undzwar beobachte ich schon seit längerem, das mir der Apache sowie der MySQL Server mir den Ram wegfrisst.

Ich hab hier bestimmt 20 - 25 mySQL Prozesse und auch in etwa soviele apache2 Prozesse.

Hier mal die Ausgabe von top

Code:
top - 13:37:56 up 6 days,  3:21,  1 user,  load average: 9.70, 8.11, 8.54
Tasks: 215 total,   1 running, 213 sleeping,   0 stopped,   1 zombie
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni, 74.5%id, 25.5%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  16406500k total,  9455744k used,  6950756k free,   217140k buffers
Swap:  3997680k total,        0k used,  3997680k free,  8582008k cached


Wie man sieht ist die load sehr hoch.

Und hier mal die config files

my.cnf

Code:
#
# 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
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

# 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
# lc-message-dir is unknown to MySQL 5.1
#lc-messages-dir    = /usr/share/mysql
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            = 340
wait_timeout        = 30000
interactive_timeout = 30000
join_buffer_size = 120K
sort_buffer_size = 2M
read_rnd_buffer_size = 250K
#thread_concurrency     = 10
#
# * Query Cache Configuration
#
query_cache_limit    = 900K
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
#slow_query_log = 1
#slow_query_log_file = /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



[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/


apache2.conf

Code:
#
# Based upon the NCSA server configuration files originally by Rob McCool.
#
# This is the main Apache server configuration file.  It contains the
# configuration directives that give the server its instructions.
# See http://httpd.apache.org/docs/2.2/ for detailed information about
# the directives.
#
# Do NOT simply read the instructions in here without understanding
# what they do.  They're here only as hints or reminders.  If you are unsure
# consult the online docs. You have been warned.  
#
# The configuration directives are grouped into three basic sections:
#  1. Directives that control the operation of the Apache server process as a
#     whole (the 'global environment').
#  2. Directives that define the parameters of the 'main' or 'default' server,
#     which responds to requests that aren't handled by a virtual host.
#     These directives also provide default values for the settings
#     of all virtual hosts.
#  3. Settings for virtual hosts, which allow Web requests to be sent to
#     different IP addresses or hostnames and have them handled by the
#     same Apache server process.
#
# Configuration and logfile names: If the filenames you specify for many
# of the server's control files begin with "/" (or "drive:/" for Win32), the
# server will use that explicit path.  If the filenames do *not* begin
# with "/", the value of ServerRoot is prepended -- so "foo.log"
# with ServerRoot set to "/etc/apache2" will be interpreted by the
# server as "/etc/apache2/foo.log".
#

### Section 1: Global Environment
#
# The directives in this section affect the overall operation of Apache,
# such as the number of concurrent requests it can handle or where it
# can find its configuration files.
#

#
# ServerRoot: The top of the directory tree under which the server's
# configuration, error, and log files are kept.
#
# NOTE!  If you intend to place this on an NFS (or otherwise network)
# mounted filesystem then please read the LockFile documentation (available
# at <URL:http://httpd.apache.org/docs/2.2/mod/mpm_common.html#lockfile>);
# you will save yourself a lot of trouble.
#
# Do NOT add a slash at the end of the directory path.
#
#ServerRoot "/etc/apache2"

#
# The accept serialization lock file MUST BE STORED ON A LOCAL DISK.
#
LockFile ${APACHE_LOCK_DIR}/accept.lock

#
# PidFile: The file in which the server should record its process
# identification number when it starts.
# This needs to be set in /etc/apache2/envvars
#
PidFile ${APACHE_PID_FILE}

#
# Timeout: The number of seconds before receives and sends time out.
#
Timeout 10

#
# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to "Off" to deactivate.
#
KeepAlive On

#
# MaxKeepAliveRequests: The maximum number of requests to allow
# during a persistent connection. Set to 0 to allow an unlimited amount.
# We recommend you leave this number high, for maximum performance.
#
MaxKeepAliveRequests 100

#
# KeepAliveTimeout: Number of seconds to wait for the next request from the
# same client on the same connection.
#
KeepAliveTimeout 3

##
## Server-Pool Size Regulation (MPM specific)
##
# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_prefork_module>
    StartServers         5
MinSpareServers      5
MaxSpareServers     10
ServerLimit        150
MaxClients         150
MaxRequestsPerChild  0
</IfModule>

# worker MPM
# StartServers: initial number of server processes to start
# MaxClients: maximum number of simultaneous client connections
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadLimit: ThreadsPerChild can be changed to this maximum value during a
#              graceful restart. ThreadLimit can only be changed by stopping
#              and starting Apache.
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_worker_module>
    StartServers          2
    MinSpareThreads      5
    MaxSpareThreads      10
    ThreadLimit          64
    ThreadsPerChild      25
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>

# event MPM
# StartServers: initial number of server processes to start
# MaxClients: maximum number of simultaneous client connections
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_event_module>
    StartServers          2
    MaxClients          150
    MinSpareThreads      5
    MaxSpareThreads      10
    ThreadLimit          64
    ThreadsPerChild      25
    MaxRequestsPerChild   0
</IfModule>

# These need to be set in /etc/apache2/envvars
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}

#
# AccessFileName: The name of the file to look for in each directory
# for additional configuration directives.  See also the AllowOverride
# directive.
#

AccessFileName .htaccess

#
# The following lines prevent .htaccess and .htpasswd files from being
# viewed by Web clients.
#
<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy all
</Files>

#
# DefaultType is the default MIME type the server will use for a document
# if it cannot otherwise determine one, such as from filename extensions.
# If your server contains mostly text or HTML documents, "text/plain" is
# a good value.  If most of your content is binary, such as applications
# or images, you may want to use "application/octet-stream" instead to
# keep browsers from trying to display binary files as though they are
# text.
#
DefaultType text/plain


#
# HostnameLookups: Log the names of clients or just their IP addresses
# e.g., www.apache.org (on) or 204.62.129.132 (off).
# The default is off because it'd be overall better for the net if people
# had to knowingly turn this feature on, since enabling it means that
# each client request will result in AT LEAST one lookup request to the
# nameserver.
#
HostnameLookups Off

# ErrorLog: The location of the error log file.
# If you do not specify an ErrorLog directive within a <VirtualHost>
# container, error messages relating to that virtual host will be
# logged here.  If you *do* define an error logfile for a <VirtualHost>
# container, that host's errors will be logged there and not here.
#
ErrorLog ${APACHE_LOG_DIR}/error.log

#
# LogLevel: Control the number of messages logged to the error_log.
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
#
LogLevel warn

# Include module configuration:
Include mods-enabled/*.load
Include mods-enabled/*.conf

# Include all the user configurations:
Include httpd.conf

# Include ports listing
Include ports.conf

#
# The following directives define some format nicknames for use with
# a CustomLog directive (see below).
# If you are behind a reverse proxy, you might want to change %h into %{X-Forwarded-For}i
#
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

# Include of directories ignores editors' and dpkg's backup files,
# see README.Debian for details.

# Include generic snippets of statements
Include conf.d/

# Include the virtual host configurations:
Include sites-enabled/


Durch die ganzen Prozesse was mySQL und Apache2 angeht, laden natürlich die Seiten deutlich länger, oder das laden der Seite wird abgebrochen.

mysqltuner hab ich auch schon benutzt und auch die Vars angepasst.

Ich hoffe ihr könnt mir bei dem Problem helfen.


RE: Apache2 + MySQL Problem - NevaKee - 29.03.2013 13:57

Ich würde am besten mal die komplett Ausgabe von top posten.


RE: Apache2 + MySQL Problem - Kevv - 29.03.2013 14:14

NevaKee schrieb:
Ich würde am besten mal die komplett Ausgabe von top posten.


Code:
28851 www-data  20   0  242m  15m 4800 S    0  0.1   0:00.04 apache2
28874 root      20   0 10968 1324  928 R    0  0.0   0:00.10 top
28907 www-data  20   0  240m  11m 1816 S    0  0.1   0:00.01 apache2
    1 root      20   0  8356  812  680 S    0  0.0   0:02.82 init
    2 root      20   0     0    0    0 S    0  0.0   0:00.00 kthreadd
    3 root      RT   0     0    0    0 S    0  0.0   0:00.22 migration/0
    4 root      20   0     0    0    0 S    0  0.0   0:00.95 ksoftirqd/0
    5 root      RT   0     0    0    0 S    0  0.0   0:00.00 watchdog/0
    6 root      RT   0     0    0    0 S    0  0.0   0:00.33 migration/1
    7 root      20   0     0    0    0 S    0  0.0   0:01.23 ksoftirqd/1
    8 root      RT   0     0    0    0 S    0  0.0   0:00.00 watchdog/1
    9 root      RT   0     0    0    0 S    0  0.0   0:00.40 migration/2
   10 root      20   0     0    0    0 S    0  0.0   0:00.68 ksoftirqd/2
   11 root      RT   0     0    0    0 S    0  0.0   0:00.00 watchdog/2
   12 root      RT   0     0    0    0 S    0  0.0   0:00.26 migration/3
   13 root      20   0     0    0    0 S    0  0.0   0:00.52 ksoftirqd/3
   14 root      RT   0     0    0    0 S    0  0.0   0:00.00 watchdog/3
   15 root      RT   0     0    0    0 S    0  0.0   0:00.25 migration/4
   16 root      20   0     0    0    0 S    0  0.0   0:00.97 ksoftirqd/4
   17 root      RT   0     0    0    0 S    0  0.0   0:00.00 watchdog/4
   18 root      RT   0     0    0    0 S    0  0.0   0:00.18 migration/5
   19 root      20   0     0    0    0 S    0  0.0   0:00.26 ksoftirqd/5
   20 root      RT   0     0    0    0 S    0  0.0   0:00.00 watchdog/5
   21 root      RT   0     0    0    0 S    0  0.0   0:00.20 migration/6
   22 root      20   0     0    0    0 S    0  0.0   0:00.19 ksoftirqd/6
   23 root      RT   0     0    0    0 S    0  0.0   0:00.00 watchdog/6
   24 root      RT   0     0    0    0 S    0  0.0   0:00.20 migration/7
   25 root      20   0     0    0    0 S    0  0.0   0:00.21 ksoftirqd/7
   26 root      RT   0     0    0    0 S    0  0.0   0:00.00 watchdog/7
   27 root      20   0     0    0    0 S    0  0.0   0:05.91 events/0
   28 root      20   0     0    0    0 S    0  0.0   0:01.82 events/1
   29 root      20   0     0    0    0 S    0  0.0   3:52.08 events/2
   30 root      20   0     0    0    0 S    0  0.0   0:01.36 events/3
   31 root      20   0     0    0    0 S    0  0.0   0:01.34 events/4
   32 root      20   0     0    0    0 S    0  0.0   0:01.11 events/5
   33 root      20   0     0    0    0 S    0  0.0   0:01.06 events/6
   34 root      20   0     0    0    0 S    0  0.0   0:01.10 events/7
   35 root      20   0     0    0    0 S    0  0.0   0:00.00 cpuset
   36 root      20   0     0    0    0 S    0  0.0   0:00.00 khelper
   37 root      20   0     0    0    0 S    0  0.0   0:00.00 netns
   38 root      20   0     0    0    0 S    0  0.0   0:00.00 async/mgr
   39 root      20   0     0    0    0 S    0  0.0   0:00.00 pm
   40 root      20   0     0    0    0 S    0  0.0   0:00.25 sync_supers
   41 root      20   0     0    0    0 S    0  0.0   0:00.28 bdi-default
   42 root      20   0     0    0    0 S    0  0.0   0:00.00 kintegrityd/0
   43 root      20   0     0    0    0 S    0  0.0   0:00.00 kintegrityd/1
   44 root      20   0     0    0    0 S    0  0.0   0:00.00 kintegrityd/2
   45 root      20   0     0    0    0 S    0  0.0   0:00.00 kintegrityd/3


Hab noch nen paar Screens von htop beigefügt.


RE: Apache2 + MySQL Problem - Dream-Code - 29.03.2013 14:21

600 MB RAM werden genutzt... das ist nicht wirklich viel für eine gut besuchte Seite, die ich dir einfach mal unterstelle.
Auch sind 25 Threads nicht wirklich viel. Da hatte ich schon deutlich mehr Wink
Würde mir mehr Sorgen über die CPU Auslastung machen, die sieht in meinen Augen min. auf dem einen Screen nicht gut aus.


RE: Apache2 + MySQL Problem - Kevv - 29.03.2013 14:30

Inspiration Host schrieb:
600 MB RAM werden genutzt... das ist nicht wirklich viel für eine gut besuchte Seite, die ich dir einfach mal unterstelle.
Auch sind 25 Threads nicht wirklich viel. Da hatte ich schon deutlich mehr Wink
Würde mir mehr Sorgen über die CPU Auslastung machen, die sieht in meinen Augen min. auf dem einen Screen nicht gut aus.


Ich hab gerade mal eine Seite auf dem Host geladen, hier kannst du mal auf dem Screen sehen, wie die MySQL Prozesse die CPU in die Höhe treiben.


RE: Apache2 + MySQL Problem - Dream-Code - 29.03.2013 14:34

Das sieht echt nicht normal aus... welches CMS nutzt du? Und hast du eine Möglichkeit (z.B. Google Analytics) um die momentane Besucherzahl herauszufinden?


RE: Apache2 + MySQL Problem - Kevv - 29.03.2013 14:39

Der jenige nutzt etwas selbst geschriebenes.
Aber es läuft überwiegend webSPELL auf dem Host.
Google Analytics ist zwar vorhanden bei der Seite, aber dadrauf hab ich keinen Zugriff


RE: Apache2 + MySQL Problem - Dream-Code - 29.03.2013 14:42

Hast du Skype? Könnte mal drüberschauen per TeamViewer oder so Wink
Gesund sieht das auf jeden Fall nicht aus, kann dir per Skype dann auch mal nen Screen von meinem Server senden ^^ da läuft sogar noch nen kleiner MC Server und er hat weniger CPU Load!


RE: Apache2 + MySQL Problem - Leon - 29.03.2013 16:12

Schonmal in die php.ini geschaut Wink ?
Die php.ini findest du in /etc/php5/apache2/php.ini
Kannst ja mal schauen auf was das memory_limit gesetzt ist, wenn du meinst das zu viel RAM verwendet wird, kannst du das memory_limit runterschrauben, aber nicht unbedingt empfehlenswert.
Standardmäßig sollten 128M konfiguriert sein.

Hast du einen v oder Dedicated-Server ?

Falls vServer würde ich mich mal erkundigen wie viel CPU Leistung du von deinem Hoster bekommst, insofern keine Vollvirtualisierung kann es sein, das andere vServer auf deinen übergreifen und dir deine Leistung nehmen Wink

Du hast 16GB Arbeitsspeicher, da sind ca. 600MB doch nichts.


RE: Apache2 + MySQL Problem - Dream-Code - 29.03.2013 16:21

Ich bin bereits dabei, ihm zu helfen Wink wir haben das Problem schon. Es sind Floods aus China. Sind grad dabei, alles zu blocken und dagegen abzusichern.


RE: Apache2 + MySQL Problem - Kevv - 29.03.2013 16:38

Problem wurde soweit eingedämmt, das die 8 Cores nicht auf 100% hochdonnern.

Danke an Inspiration Host Wink