Problem nebude s Apachom, ale skor s MySQL a teda konfiguracnym suborom my.conf, pripadne treba este pozriet limity pre PHP v php.ini. Ale timeout bude sposobeny nastavenim MySQL. Takze hod sem config a nieco sa vymysli.
Doporucujem tiez vyskusat MySQLtuner, je to perl script pre informacie o MySQL, niektore veci ti urcite pomozu pre vyladenie: http://blog.mysqltuner.com/
root@obelix:~# mysqltuner
>> MySQLTuner 0.9.0 - Major Hayden <[email protected]>
>> Bug reports, feature requests, and downloads at http://mysqltuner.com/
>> Run with '--help' for additional options and output filtering
Please enter your MySQL administrative login: root
Please enter your MySQL administrative password:
-------- General Statistics --------------------------------------------------
[!!] There is a new version of MySQLTuner available
[OK] Currently running supported MySQL version 5.0.32-Debian_7etch11-log
[OK] Operating on 64-bit architecture
-------- Storage Engine Statistics -------------------------------------------
[--] Status: +Archive -BDB -Federated +InnoDB -ISAM -NDBCluster
[--] Data in MyISAM tables: 2G (Tables: 1616)
[!!] InnoDB is enabled but isn't being used
-------- Performance Metrics -------------------------------------------------
[--] Up for: 15d 15h 28m 18s (528M q [390.733 qps], 18M conn, TX: 292B, RX: 24B)
[--] Reads / Writes: 86% / 14%
[--] Total buffers: 2.6M per thread and 58.0M global
[OK] Maximum possible memory usage: 320.5M (8% of installed RAM)
[OK] Slow queries: 0% (12/528M)
[!!] Highest connection usage: 100% (101/100)
[OK] Key buffer size / total MyISAM indexes: 16.0M/228.2M
[OK] Key buffer hit rate: 99.9%
[OK] Query cache efficiency: 94.0%
[!!] Query cache prunes per day: 1059202
[OK] Sorts requiring temporary tables: 0%
[OK] Temporary tables created on disk: 4%
[OK] Thread cache hit rate: 99%
[!!] Table cache hit rate: 0%
[OK] Open file limit used: 12%
[OK] Table locks acquired immediately: 99%
-------- Recommendations -----------------------------------------------------
General recommendations:
Add skip-innodb to MySQL configuration to disable InnoDB
Enable the slow query log to troubleshoot bad queries
Reduce or eliminate persistent connections to reduce connection usage
Increase table_cache gradually to avoid file descriptor limits
Variables to adjust:
max_connections (> 100)
wait_timeout (< 28800)
interactive_timeout (< 28800)
query_cache_size (> 16M)
table_cache (> 64)
root@obelix:~#
Ked sa pozries na vypis z MySQLtuneru, tak hned vidis niektore veci, ktore nie su v poriadku. V prvom rade pouzivas staru staru verziu, tj MySQLtuner 0.9.0, pricom je k dispozicii podstatne novsia, aktualizuj si preto APT, resp. Porty, mozno su tam vyladene a dotiahnute niektore veci. Ale idem k tej MySQL.
1. Mas pustene InnoDB, ktore nevyuzivas, preto ho mozes vypnut.
2. Tvoj server ma 4GB RAM, ale MySQL s aktualnymi limitmi vyuzije len 320.5M, cize 8 percent RAMky. Treba zvysit limity, nech vyuzijes tak 3,5GB pre MySQL databazu, zvysok pre system ako taky.
3. Pocet spojeni mas nastavenych na 100, tie boli uz zaplnene, zvys to trebars na 200.
4. Key buffer a query su podla logu OK, ale maju nizku hodnotu a tak sa premazavaju. Treba zvysit hodnoty.
5. Mas tam vysoke timeouty, ktore mozes znizit. Neviem ake slozite query robis, ale treba tam rapidne ubrat.
Do prilohy pridavam ten tvoj config, ktory je upraveny. Skus ho pouzit na MySQL, restartuj server, pusti MySQLtuner a pozri sa vo vypise, kolko ti ukaze vyuzitej RAMky. Je mozne, ze tie hodnoty som presiahol a teda ze ti bude vyuzivat viacej ako 4GB, tym padom moze MySQL padat, preto bude treba niekde ubrat hodnoty. Spravil som tam tieto zmeny:
1. key_buffer a key_buffer_size
2. max_connections
3. table_cache
4. thread_concurrency
5. od connect_timeout az po interactive_timeout
6. skip-innodb
7. query_cache_limit a query_cache_size
Do prilohy davam tvoj upraveny config, v pripade, ze bude pisat vyuzitie viac ako 4GB, zniz trebars max_connections na menej. Taktiez problemom by v tvojom pripade mohli byt hodnoty pri wait_timeout a interactive_timeout, pripadne aj connect_timeout. Potom ich pripadne zvys.
Ak pouzijes ten config, tak to nechaj bezat par minut, resp. hodit a potom opatovne pozri vypis z MySQLtuner, ze ci ti neodporuca zmenit niektore hodnoty.
K php.ini: Je tam hodnota mysql.connect_timeout = 60, mozes to skusit zvysit trebars na 90 ci 120. Cas pre script oznaceny ako max_execution_time mas 60, cas pre vstup max_input_time mas 60, tieto hodnoty mozes pripadne zvysit, ak mas zlozite scripty, ktore dlho trvaju a pracuju s MySQL. A potom je tam este hodnota memory_limit, ktoru mas 256M, cize PHP script ti moze vyuzit az 256MB RAM, co je dost velka hodnota, kedze standardne sa to pouziva asi 16MB. Ja na hojko.com pouzivam 32MB, aj to bolo len nastavenie kvoli flash hram este na starom fore, takze som musel hodnotu nastavit na 32M, pretoze v opacnom pripade ostavala cista biela strana pri nacitani hier.