Absturz der Homepage bei zu vielen zugriffen

  • Moin Moin,


    ich habe gerade das Problem, dass bei eine erhöhten Zugriffsanfange auf meine Seite diese Fehler geworfen hat.


    System: EQdkp 2.2.13

    System: Debian


    Ich bekomme im fatal_error.log folgende Meldungen:


    17.05.2018 14:42:10 >>>> eb13ffcc0e74cf57068d3b96faccdad0 <<<<

    Type: ERROR

    Message: Out of memory (allocated 6402048) (tried to allocate 20480 bytes)

    Code: File: /var/www/html/core/cache/cache_file.class.php, Line: 64

    Trace:

    File: , Line: , Function: catch_fatals, Object: plus_debug_logger

     <<<<

    17.05.2018 14:42:11 >>>> 720e8c92cf9ad8bb5e63e2bdec4e1566 <<<<

    Type: ERROR

    Message: Out of memory (allocated 27262976) (tried to allocate 53248 bytes)

    Code: File: /var/www/html/core/file_handler/filehandler_php.php, Line: 94

    Trace:

    File: , Line: , Function: catch_fatals, Object: plus_debug_logger

     <<<<

    17.05.2018 14:42:14 >>>> fa0a62880377a059d50a091c62846ccf <<<<

    Type: ERROR

    Message: Out of memory (allocated 2097152) (tried to allocate 2214992 bytes)

    Code: File: /var/www/html/core/cache/cache_file.class.php, Line: 52

    Trace:

    File: , Line: , Function: catch_fatals, Object: plus_debug_logger

     <<<<

    17.05.2018 14:42:14 >>>> c3bd18de8a457d1bdb71fd07e1fbabea <<<<

    Type: ERROR

    Message: Out of memory (allocated 6291456) (tried to allocate 2214992 bytes)

    Code: File: /var/www/html/core/cache/cache_file.class.php, Line: 52

    Trace:

    File: , Line: , Function: catch_fatals, Object: plus_debug_logger

     <<<<

    17.05.2018 14:42:14 >>>> 0ba09a74cbaee6046e9b4891e5a24bce <<<<

    Type: ERROR

    Message: Out of memory (allocated 4194304) (tried to allocate 2214992 bytes)

    Code: File: /var/www/html/core/cache/cache_file.class.php, Line: 52

    Trace:

    File: , Line: , Function: catch_fatals, Object: plus_debug_logger

     <<<<

    17.05.2018 14:42:14 >>>> e326a0654e732eff80244ca4732a96c0 <<<<

    Type: ERROR

    Message: Out of memory (allocated 4194304) (tried to allocate 2214992 bytes)

    Code: File: /var/www/html/core/cache/cache_file.class.php, Line: 52

    Trace:

    File: , Line: , Function: catch_fatals, Object: plus_debug_logger



    Und ich weiß nicht, was ich in der cache_file.class.php anpassen kann, damit nicht mehr zu wenig Speicher vorhanden ist?!



    cache_file.class.php:

    <?php

    /* Project: EQdkp-Plus

    * Package: EQdkp-plus

    * Link: http://eqdkp-plus.eu

    *

    * Copyright (C) 2006-2016 EQdkp-Plus Developer Team

    *

    * This program is free software: you can redistribute it and/or modify

    * it under the terms of the GNU Affero General Public License as published

    * by the Free Software Foundation, either version 3 of the License, or

    * (at your option) any later version.

    *

    * This program is distributed in the hope that it will be useful,

    * but WITHOUT ANY WARRANTY; without even the implied warranty of

    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

    * GNU Affero General Public License for more details.

    *

    * You should have received a copy of the GNU Affero General Public License

    * along with this program. If not, see <http://www.gnu.org/licenses/>.

    */


    if( !defined( 'EQDKP_INC' ) ) {

    die( 'Do not access this file directly.' );

    }


    if(!class_exists( "cache_file")){

    class cache_file extends gen_class implements plus_datacache {


    private $cache_folder = "./data/";

    private $file_extension = '.cf.php';

    private $file_extension_length = 0;


    public function __construct( ) {

    $this->cache_folder = $this->pfh->FolderPath( 'data', 'cache' );

    $this->file_extension_length = strlen( $this->file_extension );

    }


    public function put( $key, $data, $ttl, $global_prefix, $compress = false ) {

    $key = $global_prefix.$key;

    if( $compress ) {

    $ret = $this->pfh->putContent($this->cache_folder.md5( $key ).$this->file_extension, gzcompress( serialize( $data ), 9 ));

    } else {

    $ret = $this->pfh->putContent($this->cache_folder.md5( $key ).$this->file_extension, serialize( $data ));

    }

    }


    public function get( $key, $global_prefix, $uncompress = false ) {

    $key = $global_prefix.$key;

    $filename = $this->cache_folder.md5($key).$this->file_extension;

    $result = false;

    if(is_file($filename)){

    $result = file_get_contents($filename);

    }


    //file read error

    if( $result === false ) {

    return null;

    }


    //all fine

    if( $uncompress ) {

    return unserialize( gzuncompress( $result ) );

    } else {

    return unserialize( $result );

    }

    }


    public function del( $key, $global_prefix ) {

    $key = $global_prefix.$key;

    $file = $this->cache_folder.md5( $key ).$this->file_extension;

    if( file_exists( $file ) ) {

    $ret = $this->pfh->Delete($file);

    } else {

    $ret = true;

    }

    }

    }//end class

    }//end if

    ?>


  • 17.05.2018 15:05:41 >>>> 187da7bdde03b0feb7abf47c32aab4fc <<<<

    Type: ERROR

    Message: Out of memory (allocated 4194304) (tried to allocate 2215328 bytes)

    Code: File: /var/www/html/core/cache/cache_file.class.php, Line: 52

    Trace:

    File: , Line: , Function: catch_fatals, Object: plus_debug_logger

    <<<<


    Auch hier jetzt wieder diese Fehlermeldung und mit einem Screenshot von der Homepage.

  • Da können wir dir nicht helfen. Du musst das php memory_limit auf mindestens 64MB, besser sogar 128MB bringen. Die fehlermeldungen sagen aber, dass teilweise weniger als 64MB zur Verfügung steht (wenn du die bytes mal zusammenrechnest).

    Viele Grüße,
    GodMod


    Bitte sendet mir keine unaufgeforderten Support-PNs. | Please don't send me unwanted support-PMs.
    Du willst dich bei mir bedanken: | You want to thank me:

    Amazon Wishlist | PayPal

  • Jap. Aber das komische sind ja die unterschiedlichen zur Verfügung stehenden werte. Da geht vielleicht dem ganzen server der arbeitsspeicher aus. Das Problem ist hier aber eher im php setup zu suchen.

    Viele Grüße,
    GodMod


    Bitte sendet mir keine unaufgeforderten Support-PNs. | Please don't send me unwanted support-PMs.
    Du willst dich bei mir bedanken: | You want to thank me:

    Amazon Wishlist | PayPal

  • ich hatte gerade 232 Benutzer online auf der hp, was eher unwarscheinlich ist...


    Üblich sind es so bis 30 und zu Stoßzeiten etwas 90.


    Habe gerade auch gesehen, dass der Server in dem Moment wirklich ausgelastet war (hardware) Da muss ich wohl nachpflegen und etwas drauflegen.



  • Wie gesagt, auch wenn du bei php 128MB einstellst, stand dir eben weniger zur Verfügung. Hier hilft es zu identifizieren, wodurch die Lastspitze entstand (z.B. access_log auswerten), IP-Bereiche zu sperren oder das PHP Setup performanter gestalten.

    Viele Grüße,
    GodMod


    Bitte sendet mir keine unaufgeforderten Support-PNs. | Please don't send me unwanted support-PMs.
    Du willst dich bei mir bedanken: | You want to thank me:

    Amazon Wishlist | PayPal

  • Wichtiger als das was in der php.ini steht ist das, was phpinfo() ausgibt. Weil manchmal nimmt er gar nicht die php.ini die man denkt oder überschreibt im vhost nochmal Einstellungen. Das Problem hatte ich auch diverse Male auf meinen systemen