1. leht 2-st

Serveri uimasuse tuvastamine

Postitatud: 01.09.2013, 00:28
Postitas -IFFI-
Ei oskagi oma peaga kuidagi kusagilt hakata asja uurima.

Vahepeal suvalisel hetkel laeb mõnda lehte (saidil ringi klikates mööda menüüsid) siga kaua. See ei olene lehtedest sest mõnikord laadib sama lehet ka normaalselt ja siis suvalisel hetkel jube kaua.

Näiteks ka lihtsalt refreshida lehte siis on kord OK ja siis taas jama.

Saidil küljes ka selline jubin Page generated in 0.104974

Antud hetke näitki pole normaalne see peaks ikka algama 0.01...... sellise algusega oleks juba ok aga vahepeal on see 2.blablablaaa või rohkemgi veel.

Et kust alustada tuvastamise või uurimisega mis seda võib põhjustada...alguses oli server täiesti ok...miski lambi ajast hakkas nii käituma...miskeid erilisi uuendusi lisasid poel juurde tehtud ja pandud. Kogu kasutus ja hooldus on olnud nagu alati.

Ei taha uskuda, et tegemist on väsiva rauaga kuna sellist jama ei saa omale teenuse pakkuja lubada arvestades tema mainet. Ise serverile ligi ei pääse kuna asub kusagil kesk euroopas....ise kaldun arvama miski konfi viga.

Serveris 64bit Debian Wheezy. Masin täiesti tavaline veebiserver. Ei meilindust ja midagi sellist. Apache, PHP, MySQL jooksmas

Postitatud: 01.09.2013, 01:42
Postitas obundra
Top ja iotop alustuseks, et näha mis ressurssi tarbib ning mysqli võiks ka sättida aeglaseid päringuid logima(konfis log-slow-queries) ja pärast seda logi näiteks mysqldumpslow abil uurida.

Postitatud: 01.09.2013, 10:01
Postitas -IFFI-
Tundub, et mysql ongi see pudelikael kuna vahepeal on CPU 90%
Pilt

A kuidas, mis, kus ma konfama peaks slow asja kohat logimist? Pole mingit aimugi :D või kuidas fiksata see tohutu CPU kasutus?

Oli TOP-is CPU 100% ja Page generated in 75.318126

Postitatud: 01.09.2013, 11:34
Postitas sander85
on olemas selline asi nagu mysqltuner - näitab sulle ära, kuidas oma mysql-i kiiremaks seadistada. Tasuks sellega korra üle lasta ja vaadata, et mis tulemus on. Kui masinas mälu üle on, siis ei teeks paha ka query cache. Ja kindlasti järgi vaadata, et millised queryd aeglased on.

Postitatud: 01.09.2013, 12:10
Postitas -IFFI-
See mysqltuner andis väga huvitava teate

Kood: Vali kõik

[!!] Unable to find mysqladmin in your $PATH.  Is MySQL installed?
See pole ju võimalik, et pole installitud :P aga kus ma tean milline see PATH on õige...ise käsitsi midagi ei muutnud...kogu paigaldus käis default installina... :roll:

Postitatud: 01.09.2013, 13:16
Postitas obundra
Ilmselt paigaldamata mysql-client, mysqladmin on selles pakis.

Postitatud: 01.09.2013, 14:04
Postitas -IFFI-
:P krdi lammas ikka, nikerdasin omas süleris kus kõik see jama puudub :D

Aga servust sain siis sellise tulemuse Sander85 pakutud tuningu jubinaga. Mis ma siit siis targemaks saan...ega see pilt just kõige ilusam pole järeldades et OK peaks seal olema enamus

MySQLtuning väljund

Kood: Vali kõik

# ./mysqltuner.pl

 >>  MySQLTuner 1.2.0 - Major Hayden <major@mhtx.net>
 >>  Bug reports, feature requests, and downloads at http://mysqltuner.com/
 >>  Run with '--help' for additional options and output filtering
[OK] Logged in using credentials from debian maintenance account.

-------- General Statistics --------------------------------------------------
[--] Skipped version check for MySQLTuner script
[OK] Currently running supported MySQL version 5.5.31-0+wheezy1
[OK] Operating on 64-bit architecture

-------- Storage Engine Statistics -------------------------------------------
[--] Status: +Archive -BDB -Federated +InnoDB -ISAM -NDBCluster 
[--] Data in MyISAM tables: 12M (Tables: 159)
[--] Data in InnoDB tables: 768K (Tables: 48)
[--] Data in PERFORMANCE_SCHEMA tables: 0B (Tables: 17)
[!!] Total fragmented tables: 48

-------- Security Recommendations  -------------------------------------------
[OK] All database users have passwords assigned

-------- Performance Metrics -------------------------------------------------
[--] Up for: 15d 21h 36m 54s (87M q [63.596 qps], 7M conn, TX: 24B, RX: 11B)
[--] Reads / Writes: 39% / 61%
[--] Total buffers: 192.0M global + 2.7M per thread (151 max threads)
[OK] Maximum possible memory usage: 597.8M (15% of installed RAM)
[OK] Slow queries: 0% (2K/87M)
[!!] Highest connection usage: 100%  (151/151)
[OK] Key buffer size / total MyISAM indexes: 16.0M/3.5M
[OK] Key buffer hit rate: 99.7% (498M cached / 1M reads)
[OK] Query cache efficiency: 43.2% (14M cached / 34M selects)
[OK] Query cache prunes per day: 0
[OK] Sorts requiring temporary tables: 0% (0 temp sorts / 1M sorts)
[OK] Temporary tables created on disk: 15% (2K on disk / 15K total)
[OK] Thread cache hit rate: 89% (852K created / 7M connections)
[!!] Table cache hit rate: 0% (159 open / 567K opened)
[OK] Open file limit used: 17% (184/1K)
[!!] Table locks acquired immediately: 87%
[OK] InnoDB data size / buffer pool: 768.0K/128.0M

-------- Recommendations -----------------------------------------------------
General recommendations:
    Run OPTIMIZE TABLE to defragment tables for better performance
    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
    Optimize queries and/or use InnoDB to reduce lock wait
Variables to adjust:
    max_connections (> 151)
    wait_timeout (< 28800)
    interactive_timeout (< 28800)
    table_cache (> 400)

Postitatud: 01.09.2013, 15:57
Postitas imre
Võiksid fragmenteeritud tabelitega midagi ette võtta ja siis edasi vaadata kuidas käitub.

Postitatud: 01.09.2013, 15:59
Postitas -IFFI-
NU ma võtaks kõike ette mis vähegi parandaks olukorda kui vaid oskaks kusagilt midagigi teha :)

Postitatud: 01.09.2013, 16:15
Postitas obundra
Optimeeri ja paranda:

Kood: Vali kõik

mysqlcheck -ukasutaja -pparool --auto-repair --optimize --all-databases
ja mysql konfis muuda neid mysqltuneri soovitatud parameetreid vastavalt suuremaks või väiksemaks:

Kood: Vali kõik

max_connections (> 151) 
wait_timeout (< 28800) 
interactive_timeout (< 28800) 
table_cache (> 400)

Postitatud: 02.09.2013, 20:17
Postitas -IFFI-
obundra kirjutas:Optimeeri ja paranda:

Kood: Vali kõik

mysqlcheck -ukasutaja -pparool --auto-repair --optimize --all-databases
ja mysql konfis muuda neid mysqltuneri soovitatud parameetreid vastavalt suuremaks või väiksemaks:

Kood: Vali kõik

max_connections (> 151) 
wait_timeout (< 28800) 
interactive_timeout (< 28800) 
table_cache (> 400)

Täänks abi eest aga ma ei saa mitte muhhvigi pihta kuidas noid käske anda...

Ehk viitsib keegi teadjam ka mu mysql conf failile pilgu hetita ja teha vajalikud muudatused...ise eriti ei tahaks näppida

Kood: Vali kõik

#
# 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-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            = 64
#thread_concurrency     = 10
#
# * Query Cache Configuration
#
query_cache_limit	= 1M
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
#log_slow_queries	= /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/
Kuidas defragmentida tabeleid ???

Postitatud: 02.09.2013, 23:55
Postitas obundra
No vaata mõttega oma konfi, seal on rida

Kood: Vali kõik

#max_connections = 100
# rea ees tähendab, et rida on välja kommenteeritud ja teda ei loeta, korja # sealt eest ära ja 100 asemele kirjuta mysqltuneri soovitatust(>151) suurem number, samamoodi ka nende ülejäänud soovitustega.Kui konfis ei juhtu sellist rida olema, siis tekita see sinna.Seejärel restardi mysql.
Ja defragmendib ning parandab:

Kood: Vali kõik

mysqlcheck -ukasutaja -pparool --auto-repair --optimize --all-databases
Selle toksid käsureale, "kasutaja" on sinu mysqli admin kasutaja(root, kui pole määratud teisiti), tühikuid -ukasutaja ja -pparool vahele ei jäta.

Postitatud: 03.09.2013, 18:53
Postitas -IFFI-
Ei ma saa pihta, kas mysql on nii tuksis või mis pull on.

See defrag ei aidanud miskit, mysql tuneriga ...oehh kui mitukümmend korda juba seda tuuninud, iga kord tututab, et muuda seda ja toda nii palju ja naa palju...

Kaua ma kruvin neid väärtusi edasi tagasi :cry: :evil:

Ültse on imelik, et mysql käitub nii, varem pole sellist jama olnud. Kas äkki aitab kui mysql reinstallida???

Postitatud: 03.09.2013, 20:32
Postitas spott
ei - sul on baasiga probleem või mõne tarkvaraga, mis mysql-i koormab. Kui käsurealt toime ei tule - tee üks super kasutaja ja lase phpmyadminist optimeerimine kõigil serveri tabelitest läbi.

Postitatud: 03.09.2013, 21:34
Postitas obundra
See mysqltuner ei anna tõeseid vastuseid kui teda käivitada paari minuti tagant ja kohe peale mysqli restarti, ta tahab, et mysql oleks umbes 24 tundi üleval olnud, siis on serveril juba statistikat kogunenud ja mysqltuneri soovitused on õigemad.

Postitatud: 03.09.2013, 23:22
Postitas -IFFI-
OK, selle tuneriga....

ehk oskab keegi miskit välja lugeda mysql_slow.log failist....

PhpMyAdminis kiki tabeleid selectinud ja analüüsinud ja tont kõike mis teinud...abi mitte midagi

Postitatud: 04.09.2013, 14:18
Postitas obundra
Vaata mis päringud aeglased on:

Kood: Vali kõik

mysqldumpslow -a -s c -t 10 /var/log/mysql/mysql-slow.log
10 asemele kirjutad selle numbri palju päringuid näha tahad.

Postitatud: 04.09.2013, 22:25
Postitas -IFFI-
Täpselt sama logi tuli mis post üleval manusena kaasas :?

Aru ma ei saa mis toimub... :evil:

Postitatud: 04.09.2013, 23:47
Postitas chris
# Query_time: 107.077769 Lock_time: 0.000287 Rows_sent: 72 Rows_examined: 17922384
Query_time - päring võttis aega 107 sekundit
Lock_time - lukustamisega kaotatud aeg
Rows_sent - päringu tagastatud ridade arv
Rows_examined - päringu täitmisel üle käidud ridade arv.

Mida teha? Ausalt öeldes ei tea. Ainsaks niidiotsaks on läbi käidud ridade arv.
Minu silmis on see hiiglaslik ja ma üritaks seda numbrit vähendada vanade ridade kustutamise teel.
Kui vähendamine ei ole mõeldav, siis prooviksin saavutada seda, et tabel mahuks täielikult mällu. Kui ka see ei ole võimalik, siis prooviksin jagada tabeli asukoha mitme ketta vahel.

Postitatud: 05.09.2013, 12:47
Postitas sander85
chris kirjutas:
# Query_time: 107.077769 Lock_time: 0.000287 Rows_sent: 72 Rows_examined: 17922384
Query_time - päring võttis aega 107 sekundit
Lock_time - lukustamisega kaotatud aeg
Rows_sent - päringu tagastatud ridade arv
Rows_examined - päringu täitmisel üle käidud ridade arv.

Mida teha? Ausalt öeldes ei tea. Ainsaks niidiotsaks on läbi käidud ridade arv.
Minu silmis on see hiiglaslik ja ma üritaks seda numbrit vähendada vanade ridade kustutamise teel.
Kui vähendamine ei ole mõeldav, siis prooviksin saavutada seda, et tabel mahuks täielikult mällu. Kui ka see ei ole võimalik, siis prooviksin jagada tabeli asukoha mitme ketta vahel.
See query tundub üleüldse väga kahtlane olevat, et kas seda tegevust üldse on vaja või milleks täpsemalt. Üldiselt tundub see olevat paljude probleemide algus, sest võib paasi pikkadeks pausideks umbe tõmmata.