Outils pour serveur

Nouveau WRInaute
Bonjour,

J'ai un serveur dédié partagé entre plusieurs personnes (le principe d'hébergeur mutuel).

Je voudrai avoir une idée sur les différents outils a avoir sur le serveur pour trouver la personne qui sature le serveur.

J'ai un compte sur infomaniak et une fois j'ai reçu un mail pour dire que telle requet sql est trop lourd et qu'il faux l'optimiser, ils utilisent quoi comme outils ?

Comment savoir le nombre de hits généré par chaque personne, et la quantité de RAM et CPU utilisé par chaque membre.


Merci
 
WRInaute passionné
Pour les requêtes SQL, tu peux activer le log des slow queries. Ce sont les requêtes qui mettent plus de x secondes à s'exécuter. Après tu peux aussi activer les requêtes qui n'utilisent pas d'INDEX. Ca c'est "moins" bloquant mais si un site est codé avec les pieds ça peut aider.

Ensuite pour savoir quel site fait le plus d'affichage c'est assez simple :
Code:
cd /var/log/apache2/
for file in `ls *.log"`; do echo $file; cat $file | wc -l; done
ca te dira quel site fait le plus de "hit".

Pour savoir quel personne utilise le plus de RAM et de CPU, ça par contre c'est réellement compliqué et je m'étonne toujours qu'il n'y ait pas d'outils pour ça. La fonction d'Apache "server-status" permet quand même de voir ce qui bouffe le plus (mets le plus de temps à répondre) par vhost. C'est déjà un bon début.
 
WRInaute passionné
Je me double post pour te dire aussi qu'activer le log des erreurs php peut être pas mal, un site codé avec les pieds aura plein de warning, ça peut vite casser les performances.

Pour activer les logs SQL dont je te parlais :
Code:
log_slow_queries        = /var/log/mysql/mysql-slow.log
long_query_time = 5
log-queries-not-using-indexes
log-error               = /var/log/mysql/mysql.err
tu auras tout dans le slow de cette manière :
Code:
# Time: 100917 12:02:53
# User@Host: XX[XX] @ localhost []
# Query_time: 0.001844  Lock_time: 0.000037 Rows_sent: 242  Rows_examined: 495
SET timestamp=1284717773;
SELECT f.*, ft.mark_time FROM (phpbb_forums f) LEFT JOIN phpbb_forums_track ft ON (ft.user_id = 5056 AND ft.forum_id = f.forum_id) ORDER BY f.left_id;
# Time: 100917 12:02:56
# User@Host: XX[XX] @ localhost []
# Query_time: 0.001095  Lock_time: 0.000044 Rows_sent: 110  Rows_examined: 360
SET timestamp=1284717776;
SELECT f.*, ft.mark_time FROM (phpbb_forums f) LEFT JOIN phpbb_forums_track ft ON (ft.user_id = 5056 AND ft.forum_id = f.forum_id) WHERE left_id > 32 AND left_id < 253 ORDER BY f.left_id;
Tu vois que PHPBB lance pas mal de requête qui n'ont pas d'INDEX.
Ma conf est réglé pour afficher les requêtes SQL prenant plus de 5 secondes. C'est beaucoup, mais attention car ça peut être un performance killer :
si tu mets 1s, la requête s'execute (qui allait prendre 3 secondes par exemple), elle déclenche alors un log, ce qui écrit sur le disque, donc ça peut créer une escalade de "non performance" (mon explication est à chier, mais j'espère que tu comprendras).
 
Discussions similaires
Haut