2014-07-21 3 views
6

Mit Datenbanken eine auf lokaler und andere ist auf Remote-Server-Standort. Rahmen - CakePHP Mysql: 5.1.71 - "remote location" PHP Version 5.5.14httpd - CPU-Auslastung 100% - Mysql Server Remote-Standort

Jetzt, während der lokale MySQL-Datenbank verwenden, die CPU-Auslastung für httpd Anfrage ist normal, während TOP-Befehl überprüft werden.

Allerdings während ich die Remote-Server-Datenbank verwende. Die CPU-Auslastung steigt beim Besuch derselben Seite auf 70% oder manchmal auf 100%.

Im Folgenden sind die wenigen Haupteinstellungen für php.ini und httpd.conf Dateien

php.ini

memory_limit = 128M 
max_input_time = 60 
post_max_size = 8M 

httpd.conf

<IfModule prefork.c> 
StartServers  8 
MinSpareServers 5 
MaxSpareServers 20 
ServerLimit  256 
MaxClients  256 
MaxRequestsPerChild 4000 
</IfModule> 

<IfModule worker.c> 
StartServers   4 
MaxClients   300 
MinSpareThreads  25 
MaxSpareThreads  75 
ThreadsPerChild  25 
MaxRequestsPerChild 0 
</IfModule> 

KeepAlive Off 
MaxKeepAliveRequests 100 
KeepAliveTimeout 15 

Was ist die Ursache für das sein kann hohe CPU-Auslastung für httpd in diesem Fall.

Jede Hilfe wird geschätzt.

Dank Sudhir

Antwort

0

verwendete ich zwei MySQL-Server haben, wie diese gebunden wurde. Ich würde ein paar Skripte haben, die ein paar Dinge getan haben. Man würde mir sagen, wie die Verbindungsaktion (concurrrent Sitzungsverbindungen auf dem Server) ausgesehen hat und protokollieren. Die nächste Sache würde die Nutzung des Dienstes überprüfen und wenn der Schwellenwert 70% erreicht, würde ich anfangen, Verbindungen zu zerstören und mir einige E-Mails schicken, um zu sehen, was der Deal war.

Es stellte sich heraus, dass die Zeiten während der normalen Nutzung, wenn Sie es erwarten würden Leute gerade Ihre Website wurde Borking meinem Server) zu sehen.

Einige der Dinge, die ich getan habe, um dies neben Tötungssitzungen zu mildern (was nicht cool ist). Um meine Datenbank zu normalisieren, reformieren Sie Tabellen, die stark genutzt wurden. Ich würde dann reparieren und neu indizieren.

Ich erkannte auch, dass bestimmte Dinge nicht konfigurierbar waren. Wir schaffen Redundanzen.

Ich musste meinen MySQL Server spiegeln und route dann Benutzer basierend auf Anforderungsparameter.

Schließlich hatte ich gemerkt, dass ich etwas besser Lastausgleich benötigen und mit 4 MySQL-Server und einem Loadbalancer mildernden und regelt den Verkehr endete.

So ist Ihr Ansatz auf Abfrageebene und sehen, was Sie dort tun können, dann DB/Tabelle Refactoring und reindex.

Als Nächstes erstellen gleichzeitigen Verbindung Mord Skripte und Zielbenutzer, die inaktiv sind und sie irgendwo umleiten oder sich einfach und Art und Weise für die Schwergewichte auf Ihrer Seite macht Clip.

Ich habe eine Menge Dinge im Laufe der Zeit gemacht, aber so begann alles am Tag.

Hoffe, das ist hilfreich oder zumindest Sie über einen Ansatz

denken