Suche belastet extrem den Server

karabey

Sehr aktives Mitglied
28. November 2012
910
74
Hallo,

Wir hatten seit Tagen Probleme mit den Server das es immer auf 504 Fehler oder sogar zum Neustart des Servers geführt hat. Datenbank wurde durch Suchanfragen extrem belastet. Zuständig ist die Datei "navi.php" die ständig angesprochen wird für das Suchen, Filtern etc.

Zur Testzwecken haben wir heute die Suche deaktiviert (blöd natürlich) aber siehe da keine Belastungen und Fehler Logs mehr am Server.

Hat jemand ähnliche Probleme?

Wir haben am Server laufen:


  • Ubuntu 14.04
  • PHP 5.6 + FPM
  • NGINX
  • REDIS

Code:
2016/07/13 10:49:49 [error] 5284#0: *60120 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2002] No such file or directory' in /var/www/vhosts/semaf/httpdocs/semaf/electronics/classes/core/class.core.NiceDB.php:126
Stack trace:
#0 /var/www/vhosts/semaf/httpdocs/semaf/electronics/classes/core/class.core.NiceDB.php(126): PDO->__construct('mysql:dbname=xxxx‘, ‚xxxxxx‘, ‚xxxxxxx‘, Array)
#1 /var/www/vhosts/semaf/httpdocs/semaf/electronics/admin/includes/admininclude.php(32): NiceDB->__construct('localhost', ‚xxxxxx‘, ‚xxxxx‘, ‚xxxxxx‘, true)
#2 /var/www/vhosts/semaf/httpdocs/semaf/electronics/admin/index.php(6): require_once('/var/www/vhosts...')
#3 {main}
  thrown in /var/www/vhosts/semaf/httpdocs/semaf/electronics/classes/core/class.core.NiceDB.php on line 126" while reading response header from upstream, client: xxxx, server: electronics.semaf, request: "GET /admin/index.php?uri=cGx1Z2ludmVyd2FsdHVuZy5waHA= HTTP/2.0", upstream: "fastcgi://unix:///var/www/vhosts/system/electronics.semaf/php-fpm.sock:", host: "electronics.semaf", referrer: "https://electronics.semaf/admin/marktplatz.php"


2016/07/13 10:50:54 [error] 5284#0: *60120 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2002] No such file or directory' in /var/www/vhosts/semaf/httpdocs/semaf/electronics/classes/core/class.core.NiceDB.php:126
Stack trace:
#0 /var/www/vhosts/semaf/httpdocs/semaf/electronics/classes/core/class.core.NiceDB.php(126): PDO->__construct('mysql:dbname=xxxxx‘, ‚xxxxxxx‘, ‚xxxxxx‘, Array)
#1 /var/www/vhosts/semaf/httpdocs/semaf/electronics/admin/includes/admininclude.php(32): NiceDB->__construct('localhost', ‚xxxxxxx‘, ‚xxxxxx‘, ‚xxxxxx‘, true)
#2 /var/www/vhosts/semaf/httpdocs/semaf/electronics/admin/index.php(6): require_once('/var/www/vhosts...')
#3 {main}
  thrown in /var/www/vhosts/semaf/httpdocs/semaf/electronics/classes/core/class.core.NiceDB.php on line 126" while reading response header from upstream, client: 84.115.204.109, server: electronics.semaf, request: "GET /admin/ HTTP/2.0", upstream: "fastcgi://unix:///var/www/vhosts/system/electronics.semaf/php-fpm.sock:", host: "electronics.semaf"

2016/07/13 11:02:07 [error] 2929#0: *5 upstream timed out (110: Connection timed out) while reading response header from upstream, client: xxxxx, server: electronics.semaf.at, request: "GET /navi.php?k=87&qf=3&ed=2 HTTP/1.1", upstream: "fastcgi://unix:///var/www/vhosts/system/semaf/php-fpm.sock", host: "electronics.semaf.at", referrer: "https://electronics.semaf.at/navi.php?k=87&qf=3"

2016/07/13 11:02:09[error] 2929#0: *148 connect() failed (111: Connection refused) while connecting to upstream, client: 1xxxx, server: electronics.semaf.at, request: "GET /Header-2x40-pin-Male-PTH HTTP/1.0", upstream: „xxxx/Header-2x40-pin-Male-PTH", host: "electronics.semaf.at"


2016/07/13 11:02:29 [error] 2929#0: *97 upstream timed out (110: Connection timed out) while reading response header from upstream, client: xxx, server: electronics.semaf.at, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:///var/www/vhosts/system/semaf/php-fpm.sock", host: "electronics.semaf.at", referrer: "https://www.google.at"
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.340
2.003
Berlin
AW: Suche belastet extrem den Server

Habt ihr mal das slowlog der Datenbank aktiviert.

Die Frage ist auch ob ihr jetzt so eine Menge an Artikel habt oder ob euer Server einfach nur schwach ist, leider schreibst du nix vom cpu und RAM,
Auch nicht ob das MySQL mit einem ausreichendem cache arbeitet, bzw. Optimiert wurde.

Mit mytop kann man auch die Datenbank überwachen.
 

karabey

Sehr aktives Mitglied
28. November 2012
910
74
AW: Suche belastet extrem den Server

Managed Server von Netclusive Eco M


  • Intel Xeon 2 Kerne mit 1,6Ghz
  • 8BG Ram

Wir haben etwas über 1000 Artikel. Wie ist der MySQL Cache festzustellen bzw. optimieren geht doch nur wenn man die Tabellen optimiert oder?
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.340
2.003
Berlin
AW: Suche belastet extrem den Server

Nein an den Tabellen sollst du ja nichts ändern, man optimiert den MySQL Server für sowas gibt es auch beispielsweise http://mysqltuner.com/
oder diverse Anleitungen, was man mit der Datenbank im Bezug auf seinen Verfügbaren Speicher anstellen kann.

Das was du da hast ist auch ein Vserver oder weil ich da was von garantierter Leistung lese?
Bei einem Managed Server darfst du vermutlich eh nicht in die Konfiguration eingreifen.
Es sieht ja irgendwie so aus als ob du ein socket Problem hast oder deine DB wirklich in Stress gerät wenn man sie mal kurz anstubst.

Nun mal zur Hardware ich bin ja nicht der Hardware Spezi und ich kenne deine derzeitigen Bedingungen ja nicht was die Zugriffe sagen aber :
ich hab ja schon lange keinen Server mehr gesehen der so dürftig ausgerüstet ist, bei Strato bekomme ich keinen Server mit einem Xenon unter 4x3,3GHz und was den RAM angeht würde ich nichts unter 16G nehmen udn schon gar nicht einen V-Server, du möchtest mit deinem Shop ja möglichst viele User haben.

Aber 1000 Artikel sind ja eigentlich "NISCHT" hier ist natürlich die Frage ob Ihr viel mit den Merkmalen oder Varianten macht, man kann die Suche im Admin vom Shop auch ein wenig eingrenzen, denn je mehr Felder er durchsucht umso mehr Rechenleistung und RAM wird benötigt, das Limit der Suchtreffer "Maximale Treffer pro Suche" würde ich dann auch vorläufig auf 100 verringern um überhaupt die Suche nutzen zu können.
 

MichaelH

Sehr aktives Mitglied
17. November 2008
14.213
1.797
AW: Suche belastet extrem den Server

1000 Artikel ist nicht viel, aber es kommt auch auf die Anzahl der Besucher / Tag an bzw. zu den Spitzenzeiten ... mit virtuellen Servern haben wir bei Tests keine guten Erfahrungen gemacht, virtuell = "schwankend".
 

karabey

Sehr aktives Mitglied
28. November 2012
910
74
AW: Suche belastet extrem den Server

Danke für den Hinweis..

Ich sollte eventuell den Server upgraden. Hab mal mit MySQLTuner die Daten ausgelesen. Sieht wie folgt aus nur leider verstehe ich es sehr wenig.

Bemerkt habe ich: [!!] There are 2 storage engines. Be careful.

Code:
 >>  MySQLTuner 1.6.14 - Major Hayden <major@mhtx.net>
 >>  Bug reports, feature requests, and downloads at http://mysqltuner.com/
 >>  Run with '--help' for additional options and output filtering
[--] Skipped version check for MySQLTuner script
[!!] failed to execute: SHOW SLAVE STATUS\G
[!!] FAIL Execute SQL / return code: 256
[!!] failed to execute: SHOW SLAVE HOSTS
[!!] FAIL Execute SQL / return code: 256
[OK] Currently running supported MySQL version 5.5.49
[OK] Operating on 64-bit architecture
 
-------- Storage Engine Statistics -----------------------------------------------------------------
[--] Status: +ARCHIVE +BLACKHOLE +CSV -FEDERATED +InnoDB +MEMORY +MRG_MYISAM +MyISAM +PERFORMANCE_SCHEMA 
[--] Data in MyISAM tables: 73M (Tables: 331)
[--] Data in InnoDB tables: 320K (Tables: 18)
[OK] Total fragmented tables: 0
 
-------- Database Metrics --------------------------------------------------------------------------
[--] There is 2 Database(s).
[--] All Databases:
[--]  +-- TABLE : 389
[--]  +-- ROWS  : 451685
[--]  +-- DATA  : 39.6M(53.51%)
[--]  +-- INDEX : 34.4M(46.49%)
[--]  +-- SIZE  : 74.1M
[--]  +-- COLLA : 4 (utf8_general_ci, latin1_german2_ci, latin1_swedish_ci, latin1_german1_ci)
[--]  +-- ENGIN : 3 (MEMORY, MyISAM, InnoDB)
[--] Database: electronics
[--]  +-- TABLE: 349
[--]  +-- COLL : 4 (latin1_german2_ci, latin1_swedish_ci, utf8_general_ci, latin1_german1_ci)
[--]  +-- ROWS : 451685
[--]  +-- DATA : 39.6M(53.52%)
[--]  +-- INDEX: 34.4M(46.48%)
[--]  +-- TOTAL: 74.1M
[--]  +-- ENGIN : 2 (InnoDB, MyISAM)
[!!] There are 2 storage engines. Be careful. 


[!!] 4 different collations for database electronics
[!!] 2 different engines for database electronics
[--] Charsets for electronics database table column: latin1, utf8
[!!] electronics table column(s) has  several charsets defined for all text like column(s).
[--] Collations for electronics database table column: latin1_german2_ci, latin1_swedish_ci, latin1_german1_ci, utf8_general_ci
[!!] electronics table column(s) has  several collations defined for all text like column(s).
 
-------- Indexes Metrics ---------------------------------------------------------------------------
[--] Worst selectivity indexes:
[--] Index: cAbgeholt(cAbgeholt)
[--]  +-- COLUNM      : electronics.tverfuegbarkeitsbenachrichtigung
[--]  +-- NB SEQS     : 1 sequence(s)
[--]  +-- NB COLS     : 1 column(s)
[--]  +-- CARDINALITY : 0 distinct values
[--]  +-- NB ROWS     : 136 rows
[--]  +-- TYPE        : BTREE
[--]  +-- SELECTIVITY : 0.00%
[!!] cAbgeholt(cAbgeholt) has a low selectivity
[--] Index: kCheckBox(kCheckBox)
[--]  +-- COLUNM      : electronics.tcheckboxlogging
[--]  +-- NB SEQS     : 1 sequence(s)
[--]  +-- NB COLS     : 1 column(s)
[--]  +-- CARDINALITY : 0 distinct values
[--]  +-- NB ROWS     : 504 rows
[--]  +-- TYPE        : BTREE
[--]  +-- SELECTIVITY : 0.00%
[!!] kCheckBox(kCheckBox) has a low selectivity
[--] Index: kSprache(kSprache)
[--]  +-- COLUNM      : electronics.tsuchanfrage
[--]  +-- NB SEQS     : 1 sequence(s)
[--]  +-- NB COLS     : 2 column(s)
[--]  +-- CARDINALITY : 0 distinct values
[--]  +-- NB ROWS     : 1097 rows
[--]  +-- TYPE        : BTREE
[--]  +-- SELECTIVITY : 0.00%
[!!] kSprache(kSprache) has a low selectivity
[--] Index: kKampagne(kKampagne)
[--]  +-- COLUNM      : electronics.tkampagnevorgang
[--]  +-- NB SEQS     : 1 sequence(s)
[--]  +-- NB COLS     : 3 column(s)
[--]  +-- CARDINALITY : 6 distinct values
[--]  +-- NB ROWS     : 30154 rows
[--]  +-- TYPE        : BTREE
[--]  +-- SELECTIVITY : 0.02%
[!!] kKampagne(kKampagne) has a low selectivity
[--] Index: cParamWert(cParamWert)
[--]  +-- COLUNM      : electronics.tkampagnevorgang
[--]  +-- NB SEQS     : 1 sequence(s)
[--]  +-- NB COLS     : 1 column(s)
[--]  +-- CARDINALITY : 6 distinct values
[--]  +-- NB ROWS     : 30154 rows
[--]  +-- TYPE        : BTREE
[--]  +-- SELECTIVITY : 0.02%
[!!] cParamWert(cParamWert) has a low selectivity
[--] Index: cBrowser(cBrowser)
[--]  +-- COLUNM      : electronics.tbesucherarchiv
[--]  +-- NB SEQS     : 1 sequence(s)
[--]  +-- NB COLS     : 1 column(s)
[--]  +-- CARDINALITY : 13 distinct values
[--]  +-- NB ROWS     : 46284 rows
[--]  +-- TYPE        : BTREE
[--]  +-- SELECTIVITY : 0.03%
[!!] cBrowser(cBrowser) has a low selectivity
[--] Index: kSprache(kSprache)
[--]  +-- COLUNM      : electronics.tsuchanfrageerfolglos
[--]  +-- NB SEQS     : 1 sequence(s)
[--]  +-- NB COLS     : 2 column(s)
[--]  +-- CARDINALITY : 2 distinct values
[--]  +-- NB ROWS     : 2840 rows
[--]  +-- TYPE        : BTREE
[--]  +-- SELECTIVITY : 0.07%
[!!] kSprache(kSprache) has a low selectivity
[--] Index: kWaehrung(kWaehrung)
[--]  +-- COLUNM      : electronics.tbestellung
[--]  +-- NB SEQS     : 1 sequence(s)
[--]  +-- NB COLS     : 1 column(s)
[--]  +-- CARDINALITY : 1 distinct values
[--]  +-- NB ROWS     : 956 rows
[--]  +-- TYPE        : BTREE
[--]  +-- SELECTIVITY : 0.10%
[!!] kWaehrung(kWaehrung) has a low selectivity
[--] Index: kSprache(kSprache)
[--]  +-- COLUNM      : electronics.xplugin_bms4_index_article
[--]  +-- NB SEQS     : 1 sequence(s)
[--]  +-- NB COLS     : 1 column(s)
[--]  +-- CARDINALITY : 1 distinct values
[--]  +-- NB ROWS     : 964 rows
[--]  +-- TYPE        : BTREE
[--]  +-- SELECTIVITY : 0.10%
[!!] kSprache(kSprache) has a low selectivity
[--] Index: cAbgeholt(cAbgeholt)
[--]  +-- COLUNM      : electronics.tkunde
[--]  +-- NB SEQS     : 1 sequence(s)
[--]  +-- NB COLS     : 1 column(s)
[--]  +-- CARDINALITY : 1 distinct values
[--]  +-- NB ROWS     : 966 rows
[--]  +-- TYPE        : BTREE
[--]  +-- SELECTIVITY : 0.10%
[!!] cAbgeholt(cAbgeholt) has a low selectivity
 
-------- Security Recommendations ------------------------------------------------------------------
[!!] failed to execute: SELECT CONCAT(user, '@', host) FROM mysql.user WHERE TRIM(USER) = '' OR USER IS NULL
[!!] FAIL Execute SQL / return code: 256
[OK] There are no anonymous accounts for any database users
...
...
...
-------- CVE Security Recommendations --------------------------------------------------------------
[OK] NO SECURITY CVE FOUND FOR YOUR VERSION
 
-------- Performance Metrics -----------------------------------------------------------------------
[--] Up for: 23h 47m 57s (11M q [132.929 qps], 115K conn, TX: 4G, RX: 4G)
[--] Reads / Writes: 83% / 17%
[--] Binary logging is disabled
[--] Physical Memory     : 8.0G
[--] Max MySQL memory    : 1.3G
[--] Other process memory: 1.2G
[--] Total buffers: 913.0M global + 2.8M per thread (151 max threads)
[--] P_S Max memory usage: 0B
[--] Galera GCache Max memory usage: 0B
[--] Global Buffers
[--]  +-- Key Buffer: 128.0M
[--]  +-- Max Tmp Table: 16.0M
[--] Query Cache Buffers
[--]  +-- Query Cache: ON - ON DEMAND
[--]  +-- Query Cache Size: 256.0M
[--] Per Thread Buffers
[--]  +-- Read Buffer: 128.0K
[--]  +-- Read RND Buffer: 256.0K
[--]  +-- Sort Buffer: 2.0M
[--]  +-- Thread stack: 256.0K
[--]  +-- Join Buffer: 128.0K
[OK] Maximum reached memory usage: 968.0M (11.82% of installed RAM)
[OK] Maximum possible memory usage: 1.3G (16.21% of installed RAM)
[OK] Overall possible memory usage with other process is compatible with memory available
[OK] Slow queries: 0% (10/11M)
[OK] Highest usage of available connections: 13% (20/151)
[OK] Aborted connections: 0.44%  (506/115561)
[!!] name resolution is active : a reverse name resolution is made for each new connection and can reduce performance
[!!] Query cache may be disabled by default due to mutex contention.
[OK] Sorts requiring temporary tables: 0% (0 temp sorts / 873K sorts)
[!!] Joins performed without indexes: 38772
[OK] Temporary tables created on disk: 1% (26K on disk / 1M total)
[!!] Table cache hit rate: 0% (128 open / 35K opened)
[OK] Open file limit used: 16% (171/1K)
[OK] Table locks acquired immediately: 99% (3M immediate / 3M locks)
 
-------- Performance schema ------------------------------------------------------------------------
[--] Performance schema is disabled.
 
-------- ThreadPool Metrics ------------------------------------------------------------------------
[--] ThreadPool stat is disabled.
 
-------- MyISAM Metrics ----------------------------------------------------------------------------
[!!] Key buffer used: 18.4% (24M used / 134M cache)
[OK] Key buffer size / total MyISAM indexes: 128.0M/34.4M
[OK] Read Key buffer hit rate: 99.9% (95M cached / 50K reads)
[!!] Write Key buffer hit rate: 19.4% (86K cached / 69K writes)
 
-------- AriaDB Metrics ----------------------------------------------------------------------------
[--] AriaDB is disabled.
 
-------- InnoDB Metrics ----------------------------------------------------------------------------
[--] InnoDB is enabled.
[--] InnoDB Buffers
[--]  +-- InnoDB Buffer Pool: 512.0M
[--]  +-- InnoDB Buffer Pool Instances: 1
[--]  +-- InnoDB Additional Mem Pool: 512.0K
[--]  +-- InnoDB Log Buffer: 500.0K
[--]  +-- InnoDB Log Buffer Free: 29.2K
[--]  +-- InnoDB Log Buffer Used: 32.0K
[OK] InnoDB buffer pool / data size: 512.0M/320.0K
[OK] InnoDB buffer pool instances: 1
[!!] InnoDB Used buffer: 8.62% (2826 used/ 32767 total)
[OK] InnoDB Read buffer efficiency: 98.95% (258705 hits/ 261438 total)
[OK] InnoDB Write log efficiency: 90.11% (18564 hits/ 20601 total)
[OK] InnoDB log waits: 0.00% (0 waits / 2037 writes)
 
-------- TokuDB Metrics ----------------------------------------------------------------------------
[--] TokuDB is disabled.
 
-------- Galera Metrics ----------------------------------------------------------------------------
[--] Galera is disabled.
 
-------- Replication Metrics -----------------------------------------------------------------------
[--] Galera Synchronous replication: NO
[--] No replication slave(s) for this server.
[--] This is a standalone server.
 
-------- Recommendations ---------------------------------------------------------------------------
General recommendations:
    Check all table collations are identical for all tables in electronics database.
    Check all table engines are identical for all tables in electronics database.
    Limit charset for column to one charset if possible for electronics database.
    Limit collations for column to one collation if possible for electronics database.
    MySQL started within last 24 hours - recommendations may be inaccurate
    Enable the slow query log to troubleshoot bad queries
    Configure your accounts with ip or subnets only, then update your configuration with skip-name-resolve=1
    Adjust your join queries to always utilize indexes
    Increase table_open_cache gradually to avoid file descriptor limits
    Read this before increasing table_open_cache over 64: http://bit.ly/1mi7c4C
    Beware that open_files_limit (1024) variable 
    should be greater than table_open_cache ( 128)
Variables to adjust:
    query_cache_type (=0)
    join_buffer_size (> 128.0K, or always use indexes with joins)
    table_open_cache (> 128)
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.340
2.003
Berlin
AW: Suche belastet extrem den Server

Ich sollte eventuell den Server upgraden.
Das Grundsätzlich, aber es fehlen ja immer noch Daten über Zufgriffszahlen und wie deine Kategorien/Artikel aufgebaut sind, ich hab derzeit nen Kunden mit mehreren 100 Verschachtelten Kategorien runter bis in die 6. Ebene, mit 32MB RAM und einem I7 und der Cache wird nur über Dateien verwaltet, da kann ich mir nen Kaffee holen, bis der fertig ist mit dem Anzeigen der Seite udn da macht es schon einen Unterschied ob ich sage ich möchte nur Kategorien "mit Artikel" oder ich möchte auch "Kategorien die leer" sind sehen.

Ich finde die Preise bei denen irgendwie recht heftig und das sieht ja nach V-Server aus also auf einen Dedicated Server wechseln oder wenn du noch im Anfangsstadium bist und nicht alles in einen Server investieren möchtest, lieber einen Webspace bei HE, All Incl. oder vergleichbares nehmen, die haben die Power um deinen Shop vernünftig anzuzeigen.

Bemerkt habe ich: [!!] There are 2 storage engines. Be careful.

Das steht da weil die Datenbank auch einige InnoDB Tabellen hat.
Und da steht auch das deine Datenbank erst seit 23 Stunden läuft, verwertbare Werte hat man erst nach einen paar Tagen und dann steht da unten am Ende was dir das Script alles empfiehlt.
 

Ähnliche Themen