RAM Probleme mit Apache

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von narak, 06.10.2006.

  1. narak

    narak Thread Starter MacUser Mitglied

    Beiträge:
    62
    Zustimmungen:
    0
    MacUser seit:
    25.05.2006
    Hallo,

    ich habe bei 1&1 einen webserver zu laufen, doch leider macht der Apache bei größeren php skripten (in verbindung mit einer mysql datenbank) die grätsche. genauer gesagt, der RAM ist völlig ausgelastet und http requestst werden nicht weiter bearbeitet.

    nachdem ich manuell einige httpd prozesse abgeschossen habe läuft dann wieder alles 1A, aber das ist keine lösung auf dauer.

    die server-tuning.conf:
    Code:
    # prefork MPM
    <IfModule prefork.c>
            # number of server processes to start
            StartServers        2
            # minimum number of server processes which are kept spare
            MinSpareServers    2
            # maximum number of server processes which are kept spare
            MaxSpareServers     5
            # highest possible MaxClients setting for the lifetime of the Apache process.
            ServerLimit        150
            # maximum number of server processes allowed to start
            MaxClients          15
            # maximum number of requests a server process serves
            MaxRequestsPerChild  100
    </IfModule>
    # worker MPM
    <IfModule worker.c>
            # initial number of server processes to start
            StartServers         2
            # minimum number of worker threads which are kept spare
            MinSpareThreads     2
            # maximum number of worker threads which are kept spare
            MaxSpareThreads     5
            # maximum number of simultaneous client connections
            MaxClients         150
            # constant number of worker threads in each server process
            ThreadsPerChild     25
            # maximum number of requests a server process serves
            MaxRequestsPerChild  100
    </IfModule>
    
    # leader MPM
    <IfModule leader.c>
            # initial number of server processes to start
            StartServers         2
            # minimum number of worker threads which are kept spare
            MinSpareThreads     2
            # maximum number of worker threads which are kept spare
            MaxSpareThreads     5
            # maximum number of simultaneous client connections
            MaxClients         150
            # constant number of worker threads in each server process
            ThreadsPerChild     25
            # maximum number of requests a server process serves
            MaxRequestsPerChild  100
    </IfModule>
    
    # perchild MPM
    <IfModule perchild.c>
            # constant number of server processes
            NumServers           5
            # initial number of worker threads in each server process
            StartThreads         5
            # minimum number of worker threads which are kept spare
            MinSpareThreads      5
            # maximum number of worker threads which are kept spare
            MaxSpareThreads     10
            # maximum number of worker threads in each server process
            MaxThreadsPerChild  20
            # maximum number of connections per server process
            MaxRequestsPerChild  100
    
            AcceptMutex fcntl
    </IfModule>
    
    # metux MPM
    <IfModule metuxmpm.c>
            # initial number of worker threads in each server process
            StartThreads          2
            # minimum number of worker threads which are kept spare
            MinSpareThreads       5
            # maximum number of worker threads which are kept spare
            MaxSpareThreads      10
            # maximum number of connections per server process
            MaxRequestsPerChild   100
    
            Multiplexer     "wwwrun"        "www"
    
    </IfModule>
    
    KeepAlive On
    MaxKeepAliveRequests 100
    KeepAliveTimeout 5
    
    die http.conf:
    Code:
    ### Global Environment ######################################################
    #
    # The directives in this section affect the overall operation of Apache,
    # such as the number of concurrent requests.
    
    # run under this user/group id
    Include /etc/apache2/uid.conf
    
    # - how many server processes to start (server pool regulation)
    # - usage of KeepAlive
    Include /etc/apache2/server-tuning.conf
    
    # 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 /var/log/apache2/error_log
    
    # generated from APACHE_MODULES in /etc/sysconfig/apache2
    Include /etc/apache2/sysconfig.d/loadmodule.conf
    
    # IP addresses / ports to listen on
    Include /etc/apache2/listen.conf
    
    # predefined logging formats
    Include /etc/apache2/mod_log_config.conf
    
    # generated from global settings in /etc/sysconfig/apache2
    Include /etc/apache2/sysconfig.d/global.conf
    
    # optional mod_status, mod_info
    Include /etc/apache2/mod_status.conf
    Include /etc/apache2/mod_info.conf
    
    # optional cookie-based user tracking
    # read the documentation before using it!!
    Include /etc/apache2/mod_usertrack.conf
    
    # configuration of server-generated directory listings
    Include /etc/apache2/mod_autoindex-defaults.conf
    
    # associate MIME types with filename extensions
    TypesConfig /etc/apache2/mime.types
    DefaultType text/plain
    Include /etc/apache2/mod_mime-defaults.conf
    
    # set up (customizable) error responses
    Include /etc/apache2/errors.conf
    
    # global (server-wide) SSL configuration, that is not specific to
    # any virtual host
    Include /etc/apache2/ssl-global.conf
    
    
    # forbid access to the entire filesystem by default
    <Directory />
        Options None
        AllowOverride None
        Order deny,allow
        Deny from all
    </Directory>
    
    # use .htaccess files for overriding,
    AccessFileName .htaccess
    # and never show them
    <Files ~ "^\.ht">
        Order allow,deny
        Deny from all
    </Files>
    
    # List of resources to look for when the client requests a directory
    DirectoryIndex at_domains_index.html index.html index.shtml index.html.var index.cfm index.php index.htm
    
    ### 'Main' server configuration 
    Include /etc/apache2/default-server.conf
    Include /etc/apache2/sysconfig.d/include.conf
    
    
    ### Virtual server configuration 
    Include /etc/apache2/vhosts.d/*.conf
    


    vllt kann mir jemand weiterhelfen?

    liebe grüße
    narak
     
  2. Toertel

    Toertel Banned

    Beiträge:
    106
    Zustimmungen:
    0
    MacUser seit:
    06.09.2006
    Also das ist eigentlich unmöglich.

    Ein Dienst wie Apache, und sollte er auch zusätzlich mit PHP und mySQL arbeiten müssen, bringt nicht den Arbeitsspeicher eines Servers zum Erliegen.

    Und wenn, dann ist es an den Experten von 1&1, dir eine angemessene Hardware zur Verfügung zu stellen.

    An deiner Stelle würde ich dann mal den Anbieter wechseln oder auf normalen Webspace mit PHP und mySQL umsteigen.
     
  3. narak

    narak Thread Starter MacUser Mitglied

    Beiträge:
    62
    Zustimmungen:
    0
    MacUser seit:
    25.05.2006
    der server ist mit einem 12 monats vertrag angemietet, da muss ich noch durch :rolleyes:


    ich denke dass es einfach an den einstellungen liegt, doch da komme ich nicht weiter. :(

    gruß
    narak
     
  4. Toertel

    Toertel Banned

    Beiträge:
    106
    Zustimmungen:
    0
    MacUser seit:
    06.09.2006
    An der Apache-Web-Server-Konfig kann es einfach nicht liegen, weil diese Einstellungen unterhalb der Rechtsebene der Verwaltung der Betriebssoftware (Systemsoftware) liegt.

    Bevor der Apache irgendwie den RAM eines Rechners überbeansprucht, wird dieser Dienst vom System automatisch in die Schranken verwiesen.

    Was mir nicht ganz gefällt, ist eine der Anweisungen hier in deiner httpd.conf:

    <Directory />
    Options None
    AllowOverride None
    Order deny,allow
    Deny from all
    </Directory>

    Das bedeutet ja, dass niemand auf deinen Webspace Zugriff erhält. So wird also niemandem je eine Webseite in deinem Root-Verzeichnis angezeigt.
    Es sollte dann schon eher so aussehen:

    <Directory />
    Options All
    AllowOverride All
    Order deny,allow
    Allow from all
    </Directory>

    Wer die Webseiten nicht besuchen darf, für den fügst du die IP nachträglich in einer .htaccess-Datei ein:

    Order deny,allow
    Deny from 72.68.19.3 (Beispiel)
    Allow from all
     
  5. narak

    narak Thread Starter MacUser Mitglied

    Beiträge:
    62
    Zustimmungen:
    0
    MacUser seit:
    25.05.2006
    es läuft aber mit diesen einstellungen :rolleyes:


    könnte das ram probem evtl am mysqld liegen? der hat ne menge prozesse erzeugt die recht viel ram reservieren...

    -siehe screenshot-
     

    Anhänge:

    • plesk.jpg
      plesk.jpg
      Dateigröße:
      63,3 KB
      Aufrufe:
      23
  6. oneOeight

    oneOeight MacUser Mitglied

    Beiträge:
    46.804
    Zustimmungen:
    3.632
    MacUser seit:
    23.11.2004
    guck mal in deine php.ini, da kann man den RAM hunger von php skripten begrenzen...

    und mal in die my.cnf ...
    wie viele mysql lässt du denn da zu?
    da steht doch extra cpu anzahl *2
     
  7. narak

    narak Thread Starter MacUser Mitglied

    Beiträge:
    62
    Zustimmungen:
    0
    MacUser seit:
    25.05.2006
    kannst du mir sagen wo ich das begrenzen kann?

    EDIT:

    my.cnf:
    Code:
    # The MySQL server
    [mysqld]
    port            = 3306
    socket          = /var/lib/mysql/mysql.sock
    skip-locking
    key_buffer = 16M
    max_allowed_packet = 1M
    table_cache = 64
    sort_buffer_size = 512K
    net_buffer_length = 8K
    read_buffer_size = 256K
    read_rnd_buffer_size = 512K
    myisam_sort_buffer_size = 8M
    thread_concurrency=2
    [safe_mysqld]
    err-log=/var/lib/mysql/mysqld.log
    
    [mysqldump]
    quick
    max_allowed_packet = 16M
    
    [mysql]
    no-auto-rehash
    # Remove the next comment character if you are not familiar with SQL
    #safe-updates
    
    [isamchk]
    key_buffer = 20M
    sort_buffer_size = 20M
    read_buffer = 2M
    write_buffer = 2M
    
    [myisamchk]
    key_buffer = 20M
    sort_buffer_size = 20M
    read_buffer = 2M
    write_buffer = 2M
    
    [mysqlhotcopy]
    interactive-timeout
                                                                                                                                   162,19        Bot
    
     
  8. oglimmer

    oglimmer MacUser Mitglied

    Beiträge:
    1.124
    Zustimmungen:
    79
    MacUser seit:
    16.11.2004
    poste doch deine php.ini noch mal (genau schauen, dass es die richtige ist, manchmal hat man mehrere auf dem server liegen)
     
  9. narak

    narak Thread Starter MacUser Mitglied

    Beiträge:
    62
    Zustimmungen:
    0
    MacUser seit:
    25.05.2006
    Code:
    
    max_execution_time = 90     ; Maximum execution time of each script, in seconds
    max_input_time = 90     ; Maximum amount of time each script may spend parsing request data
    memory_limit = 64M
    
    error_reporting  =  E_ALL & ~E_NOTICE
    
    display_errors = On
    
    display_startup_errors = Off
    
    log_errors = Off
    
    log_errors_max_len = 1024
    
    ignore_repeated_errors = Off
    
    reicht das als auszug?
     
  10. Toertel

    Toertel Banned

    Beiträge:
    106
    Zustimmungen:
    0
    MacUser seit:
    06.09.2006
    Also ich glaube, hier will uns jemand verkackeiern ...

    Wozu mietest du dir einen Server bei 1&1 für 1 Jahr, wenn du es hier nicht mal fertig bringst, deine gesamte php.ini als Anhang einzufügen?

    Und außerdem, wenn du einen Mac mit Mac OS X verwendest, wüßtest du, dass du dort im Grunde einen eigenen Webserver dabei hast. Damit kann man schon etwas mehr als nur testen wenn man es richtig anstellt. PHP ist auch dabei und sogar ein Modul für Perl/CGI und WebDAV. PHP 5 wird nachinstalliert und auch mySQL und fertig.

    Und du mietest dir für mehrere Euro monatlich einen Server bei 1&1 und weißt gar nicht damit umzugehen? Verstehe ich nicht. Wäre mir persönlich zum Rumspielen irgendwie zu teuer. :mad:
     
Die Seite wird geladen...

Diese Seite empfehlen