Έχω έναν LAMP server (Core 2 Duo 2,3Ghz, 2GBRam, single sata disk) που
κάνει host καμια 15ρια δυναμικά sites και forums, ένα από τα οποία
έχει 600k posts και σχετικά υψηλή κίνηση (~100k impressions per day)
Ο server τις peak ώρες έχει 1-1.5 load average και περίπου 60% cpu idle time.
Το πρόβλημα που παρατηρείται είναι ότι μερικές φορές το load average
ανεβαίνει ραγδαία στο 100 μέσα σε διάστημα 2,3 λεπτών. Κατά την
υπερφόρτωση απαντάει σε ping, αλλά δεν μπορεί να γίνει login μέσω ssh,
οπότε συνέρχεται μόνο με reboot.
Από ό,τι καταλαβαίνω ο server αποσταθεροποιείται λόγω κάποιας δύσκολης
διεργασίας (πχ σβήσιμο μεγάλου thread όπου γίνονται lock πίνακες) είτε
λόγω κάποιου aggresive crawler, με αποτέλεσμα να ξεκινάει κάποιο
domino effect στη Mysql και να καθυστερούν όλα τα queries και να
μένουν πολλή ώρα locked πίνακες.
Επίσης παρατηρώ ότι το io wait ανεβαίνει στο 90%.
- Υποθέτω ότι το bottleneck είναι ο δίσκος, αλλά εξηγείται τέτοια
κατάρρευση του server?
- Υπάρχει κάποιος τρόπος να δω το I/O per process? Βρήκα το iotop το
οποίο όμως θέλει να είναι ενεργοποιημένo το I/O accounting στον
kernel.
- Καμια ιδέα για διάσωση χωρίς reboot?
Ευχαριστώ,
Βαγγέλης
Nai.
>>
>> - οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½ I/O per process? οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ iotop οΏ½οΏ½
>> οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½o οΏ½οΏ½ I/O accounting οΏ½οΏ½οΏ½οΏ½
>> kernel.
>>
>> - οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ reboot?
>
> οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½: οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½binlogοΏ½
> οΏ½οΏ½οΏ½ MySQL. οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ MB οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½, οΏ½οΏ½οΏ½
> οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ disk throughput οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½
> οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ RAID.
>
> οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ manual οΏ½οΏ½οΏ½ MySQL
> <http://dev.mysql.com/doc/refman/5.0/en/binary-log.html> οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½
> οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ binlog οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½ οΏ½οΏ½οΏ½.
Kai afou to kaneis ayto, energopoihse kai to logging twn slow queries
sthn mysql. Se mia periptwsh kapoianou tou eixe fanei kalh idea na kanei
se ka8e hit enos psilomegalou web server, ena select * ston pinaka pou
kratage ta hits.
Epishs to slow query log 8a se boh8hsei na breis pou prepei endexomenws
na dhmiourghseis additional indexes.
Allo kalo ergaleiaki gia mysql tuning einai to phpmyadmin - kapou exei
ena server status page pou sou dinei diafores metablhtes tou mysql
server, kai sou leei poies den nomizei oti exoun kanonikes times gia to
setup sou.
Oso gia ta 2gb, emena mia xara mou akougontai.
>
>
>
> Η μνήμη δεν είναι και τόσο πολλή. Αν μπορείς εγώ θα πρότεινα να του
> πετάξεις κι άλλο ένα GB, έτσι για το γαμώτο της υπόθεσης.
>
2 GB extra μνήμης κοστίζουν το 30% της αξίας του server σε μηνιαία
βάση. Μάλλον συμφέρει καλύτερα να πάρω 2ο server ως database server.
> Μια πρώτη ιδέα είναι: Έλεγξε ότι δεν έχεις ενεργοποιημένο το «binlog»
> της MySQL. Έχω δει να γράφει μερικές δεκάδες MB το δευτερόλεπτο, που
> πλησιάζουν πολύ κοντά στο disk throughput ενός δίσκου που δεν είναι σε
> συστοιχία RAID.
>
> Πριν το απενεργοποιήσεις όμως δες το σχετικό τμήμα στο manual της MySQL
> <http://dev.mysql.com/doc/refman/5.0/en/binary-log.html> και σκέψου πόσο
> σε συμφέρει το binlog ενεργοποιημένο ή όχι.
>
>
To binlog δεν είναι ενεργοποιημένο. Προς το παρόν αν χρειαστεί
recovery, τότε το restore point είναι το dump της προηγούμενης ημέρας.
>> Μια πρώτη ιδέα είναι: Έλεγξε ότι δεν έχεις ενεργοποιημένο το «binlog»
>> της MySQL. Έχω δει να γράφει μερικές δεκάδες MB το δευτερόλεπτο, που
>> πλησιάζουν πολύ κοντά στο disk throughput ενός δίσκου που δεν είναι σε
>> συστοιχία RAID.
>>
>> Πριν το απενεργοποιήσεις όμως δες το σχετικό τμήμα στο manual της MySQL
>> <http://dev.mysql.com/doc/refman/5.0/en/binary-log.html> και σκέψου πόσο
>> σε συμφέρει το binlog ενεργοποιημένο ή όχι.
>
>
> Kai afou to kaneis ayto, energopoihse kai to logging twn slow queries sthn
> mysql. Se mia periptwsh kapoianou tou eixe fanei kalh idea na kanei se ka8e
> hit enos psilomegalou web server, ena select * ston pinaka pou kratage ta
> hits.
>
> Epishs to slow query log 8a se boh8hsei na breis pou prepei endexomenws na
> dhmiourghseis additional indexes.
>
> Allo kalo ergaleiaki gia mysql tuning einai to phpmyadmin - kapou exei ena
> server status page pou sou dinei diafores metablhtes tou mysql server, kai
> sou leei poies den nomizei oti exoun kanonikes times gia to setup sou.
>
> Oso gia ta 2gb, emena mia xara mou akougontai.
>
>
Το slow query log το έχω ενεργοποιημένο για queries που κάνουν πάνω
από 1 sec. Όταν ο server λειτουργεί κανονικά, τότε έχει πολύ λίγα
entries πχ κάθε 20 λεπτά εμφανίζεται και ενα query που κάνει 2, 3 sec.
Όταν ζοριστεί ο server, τότε όλα τα queries αργούν.
Έχω ενεργοποιήσει το query cache και έχω αυξήσει το key buffer και το
sort buffer και έχω δει κάποια βελτίωση.
Θα κοιτάξω και το phpmyadmin.
> - οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½ I/O per process? οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ iotop οΏ½οΏ½
> οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½o οΏ½οΏ½ I/O accounting οΏ½οΏ½οΏ½οΏ½
> kernel.
>
οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ SytemTap - οΏ½οΏ½ οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½
οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ :-)
οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½, οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ engine οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½
οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½. οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ "hits" οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ INSERT
οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½ ARCHIVE engine οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½
disk I/O. οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ myisam οΏ½οΏ½ innodb οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½ οΏ½οΏ½
οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½.
οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½, οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ munin οΏ½ awstats οΏ½οΏ½οΏ½ cron οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ οΏ½οΏ½
οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½
οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ processes οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½. οΏ½οΏ½ οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½.
--οΏ½
οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½, οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½.
οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½, οΏ½ οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½
queries. οΏ½οΏ½οΏ½οΏ½, οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ OSS οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ (οΏ½.οΏ½.
drupal, joomla, phpbb οΏ½οΏ½οΏ½) οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½
οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½.
οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½, οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½, οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ crawlers οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½
"οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½" οΏ½οΏ½οΏ½ Apache οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ swap...
οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½, οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½ Apache clients οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½
οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½.
οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½:
MaxClients 50
MaxRequestsPerChild 1000
οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½
οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½.
-οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½
>
> - οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½ I/O per process? οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ iotop οΏ½οΏ½
> οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½o οΏ½οΏ½ I/O accounting οΏ½οΏ½οΏ½οΏ½
> kernel.
>
> - οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ reboot?
>
>
> οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½,
> οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½
>
> --
> linux-greek-users mailing list -- http://lists.hellug.gr
> Χωρίς να ξέρω τι σε οδηγεί σε αυτήν την υπόθεση, δεν την πιστεύω.
> Κατά τη γνώμη μου, η μόνη περίπτωση να συμβαίνει αυτό είναι λάθος γραμμένα
> queries. Όμως, αν χρησιμοποιείς κάποια από τα γνωστά OSS πακέτα (π.χ.
> drupal, joomla, phpbb κλπ) οι πιθανότητες να συμβαίνει αυτό είναι
> εξαιρετικά μικρές.
>
> Το ποιο πιθανό αίτιο, κατά τη γνώμη μου, είναι οι crawlers που οδηγούν σε
> "φρικάρισμα" του Apache και μετά έρχεται το swap...
> Στην οποία περίπτωση, μείωσε τους Apache clients και τον αριθμό των
> αιτήσεων που εξυπηρετεί ο καθένας και πρέπει να είσαι ΟΚ.
> Παράδειγμα:
> MaxClients 50
> MaxRequestsPerChild 1000
>
> Φυσικά τα ανωτέρω νούμερα θα πρέπει να τα προσαρμόσεις στην δική σου
> περίπτωση.
>
> -Στάθης
Έχεις δίκιο. Είχα αποκλείσει, αφελώς, το ενδεχόμενο να είναι swap
καθώς δεν παρατηρούσα ποτέ πάνω από 5% swap. Τα memory statistics του
systat όμως για το τελευταίο κόλλημα έδειξαν εκείνη την ώρα μεγάλο
swapping.
Θα δοκιμάσω να χαμηλώσω Maxclients και MaxRequestPerChild.
Μήπως να κοιτάξω να βάλω nginx?
10 στις 10 φορές που έχω δει linux να πειράζει τον δίσκο σαν τρελό, να
απαντά σε pings αλλά να μην μπορείς να μπεις με ssh είναι επειδή
γέμισε η μνήμη
> Θα δοκιμάσω να χαμηλώσω Maxclients και MaxRequestPerChild.
>
> Μήπως να κοιτάξω να βάλω nginx?
Δες πρώτα την χρήση μνήμης -- μπορεί κάλλιστα να μην είναι ο apache ο
ένοχος οπότε θα χάσεις (πολύ) χρόνο για να μεταβείς σε nginx χωρίς
λόγο
Επίσης ακόμα και αν ο ένοχος είναι όντως ο apache μπορεί ο κακομοίρης
να θέλει απλά 1GB για να σε αφήσει ήσυχο
(αν πάλι θες και μπορείς να παίξεις με τον nginx γιατί όχι)
> - Καμια ιδέα για διάσωση χωρίς reboot?
χωρίς reboot όχι αλλά για clean reboot γκουγκλαρε για "The Magic SysRq key"
--
"The software is licensed, not sold" -- MICROSOFT LICENSE TERMS
οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½
οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½
οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½. οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½, οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½:
* οΏ½οΏ½ key buffers οΏ½οΏ½οΏ½ MySQL: οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½ οΏ½οΏ½οΏ½οΏ½, οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ key
buffers οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ indexed searches οΏ½οΏ½ οΏ½οΏ½
οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ indexes οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½. οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½
οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ MySQL (buffer sizes, query cache, thread cache),
οΏ½οΏ½οΏ½'οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ defaults οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ test setups.
οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ mysqlreport (οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½
οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ mysql), οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½:
http://hackmysql.com/mysqlreportguide
* οΏ½οΏ½ maxclients οΏ½οΏ½οΏ½ apache.
οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½ οΏ½ mysql οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½
οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ queries, οΏ½οΏ½οΏ½ οΏ½
apache οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½
οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ swappοΏ½οΏ½οΏ½οΏ½. οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½
οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½ kernel οΏ½οΏ½ pagecache οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½
οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½.
>
> οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½ nginx?
οΏ½οΏ½οΏ½, οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ οΏ½οΏ½
οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ proxy οΏ½οΏ½ dynamic
requests οΏ½οΏ½οΏ½οΏ½ apache. οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ apache child οΏ½οΏ½
mod_οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½ (οΏ½οΏ½οΏ½οΏ½οΏ½ 40οΏ½οΏ½οΏ½οΏ½ MB RSS) οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ jpg.
οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ *οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½* requests, οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ apache children οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½
70 οΏ½οΏ½ 12 (οΏ½οΏ½ 5 spare), οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ nginx οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ serve οΏ½οΏ½
οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½.
/οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½
--
Apollon Oikonomopoulos
GRNET Network Operations Centre http://www.grnet.gr
οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ Maxclients οΏ½οΏ½οΏ½ MaxRequestPerChild.
οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½ nginx?οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ -- οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½ apache οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ (οΏ½οΏ½οΏ½οΏ½) οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ nginx οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½
ps -eo pmem,pcpu,rss,vsize,args | sort -k 1 -r | head -11
οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½ script οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ append οΏ½οΏ½
οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ log file οΏ½οΏ½ οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½.οΏ½. οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ 10% οΏ½οΏ½οΏ½ οΏ½οΏ½
οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ script οΏ½οΏ½οΏ½ 5 οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ cron.οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ "οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½, οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½" οΏ½οΏ½ nginx...;οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½ apache οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½ 1GB οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½ (οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½ οΏ½οΏ½οΏ½ nginx οΏ½οΏ½οΏ½οΏ½οΏ½ οΏ½οΏ½οΏ½)
> +1. Προσωπικά θα προσπαθούσα να εντοπίσω ποίος ευθύνεται - π.χ. κάτι σαν: ps
> -eo pmem,pcpu,rss,vsize,args | sort -k 1 -r | head -11
> Θα το έβαζα σε ένα script που κάνει append σε κάποιο log file αν η ελεύθερη
> μνήμη είναι π.χ. κάτω από 10% και θα καλούσα το script ανά 5 λεπτά από cron.
Αρκετά χρήσιμο. Πιο σωστά το sort με nr
ps -eo pmem,pcpu,rss,vsize,args | sort -k 1 -nr | head -11
Τελικά δείχνει τον apache ως φταίχτη ο οποίος φτάνει τα 90m rss σε ενα
process. Έχω κατεβάσει τα MaxRequestsPerChild για να μην έχω πρόβλημα,
αλλά προσπαθώ να βρω γιατί ανεβαίνει τόσο. Έχω απενεργοποιήσει κάποια
modules aλλά δεν έχω δει διαφορά.
Έχω κάνει ήδη tuning στη Mysql (key, sort buffers, query cache) και
όντως έδειξε βελτίωση. Αρκετά χρήσιμα επίσης είναι τα Mysql GUI Tools
και τα graphs που μπορεί κανείς να φτιάξει (λειτουργούν και πάνω από
ssh tunnel) και βοηθάνε στο να βλέπεις εύκολα real time πχ τα hitrates
και τα sizes σε query cache και key buffers και να κάνεις ανάλογες
ρυθμίσεις.
# ps -eo pid,pmem,pcpu,rss,vsize,args | sort -k 2 -nr | head -11
7957 0.1 0.0 14444 28640 /usr/sbin/httpd
7956 0.1 0.0 14284 28220 /usr/sbin/httpd
7955 0.1 0.0 14420 28400 /usr/sbin/httpd
...
# pmap -x 7957 | sort -nrk 2 | head -11
082de000 9960 - - - rw--- [ anon ]
074a1000 1472 - - - r-x-- libphp4.so
00fcd000 1192 - - - r-x-- libperl.so
00897000 1188 - - - r-x-- libc-2.3.4.so
0074d000 852 - - - r-x-- libcrypto.so.0.9.7a
...οΏ½οΏ½ οΏ½οΏ½οΏ½οΏ½οΏ½οΏ½ (sorted away) header οΏ½οΏ½οΏ½ pmap -x:
Address Kbytes RSS Anon Locked Mode Mapping
Hope this helps.
χωρίς να έχω αξιοπρεπείς γνώσεις σχετικά με το πως μπορείς να
καταλάβεις πόση μνήμη "τρώει" κάποιο process να αναφέρω ότι θέλει
προσοχή η ερμηνεία των μετρήσεων του ps. Π.χ. σχετικά με το RSS:
$ Rss - resident memory usage, all memory the process uses.
$ While somewhat interesting as the grand total, not really that good
number on its own,
$ as a good portion of it is SHARED WITH MANY OTHER PROCESSES
-- http://www.kdedevelopers.org/node/4040