php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 11.02.2011, 18:26  
Erfahrener Benutzer
 
Registriert seit: 08.08.2009
Beiträge: 195
PHP-Kenntnisse:
Fortgeschritten
da.eXecutoR befindet sich auf einem aufstrebenden Ast
Standard Ein unverständliches Server Performance Problem

Hallo Jungs!

Ich habe zur Zeit en etwas für mich unverständliches Performance Problem mit meinem Webserver.

Kurzer Überblick:
Wir sind dabei eine Webapplikation mit PHP auf PHP 5.3 & MySQL zu entwickeln. Ich stellte im Zuge der Zeit fest dass es angefangen hat zu "laggen".

Also habe ich ein kleines Livelog als Belastungstest geschrieben.

Im Grund nichts anderes als ein PHP File welches 4 PHP Dateien inkludiert und in jeder wird per while und rand ein bisschen Strom verbraten.

Dabei wird die Zeit gemessen, das Skript wird via ajax Request jede Sekunde aufgerufen und die Zeit von der Anfrage, bis Antwort, und eben die Serverzeit wird ausgegeben.

Wenn ich dieses Skript mit dem Firefox in 7 Tab's gleichzeitig offen habe braucht mein Server zwischen 0.54 und 0.56 Sekunden.

Rufe ich das Skript mit dem IE9 in 7 Tab's gleichzeig auf, habe ich eine Serverzeit von 1.2 bis 1.8 Sekunden.

Nun die Quizzfrage, wie kann der PHP Parser mehr Zeit brauchen, abhängig vom Clientbrowser?

Beschäftige ich den apache Server generell intensiver weil die ajax Request im IE mehr Zeit benötigt als im FF?

Ich dachte mir zwar immer dass die ganze Jquery oder Javascript im allgemeinen Geschichte einen reinen Einfluss auf den Client Browser hat.

Hat jemand von euch da ähnliche Erfahrungen gemacht?

Ich habe das Live Log Script angehängt, wer will kann das gerne auch mal auf seinem Server testen.

Einfach Verzeichnis hochladen und aufrufen. ( JS muss aktiviert sein )

Was auch interessant ist, der Firefox braucht dafür für die Verbindung ca. doppelt so lange wie der IE. Ich gehe davon aus dass dies mit dem Javascript Parser zu tun hat und wie ein XMLhttpRequest erstellt wird. Welchen Einfluss soll dies aber auf die Zeit haben, welche der Server benötigt?

Grüsse

eXe
Miniaturansicht angehängter Grafiken
ein-unverstaendliches-server-performance-problem-performance_measure_results_firefox.jpg  ein-unverstaendliches-server-performance-problem-performance_measure_results_ie9.jpg  
Angehängte Dateien
Dateityp: zip plls.zip (32,7 KB, 8x aufgerufen)
__________________
It's not a bug. It's a feature!
da.eXecutoR ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 11.02.2011, 18:34  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Welche Zeit misst du als „Anfangszeit“ - die, zu der der Client den Request absendet, oder die, zu der der Request den Server erreicht hat?
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 11.02.2011, 18:39  
Erfahrener Benutzer
 
Registriert seit: 08.08.2009
Beiträge: 195
PHP-Kenntnisse:
Fortgeschritten
da.eXecutoR befindet sich auf einem aufstrebenden Ast
Standard

Die Zeit bevor der Request abgeschickt wird, hier das JS file:

PHP-Code:
$(document).ready(function(){
    
update();
})

function 
update() {
    var 
time = new Date();
    var 
zeit1 time.getTime();
    var 
request time.getHours() + ":" time.getMinutes() + ":" time.getSeconds() + ":" time.getMilliseconds();
    $.
get("performance_testing.php", function(html) {
        $(
"#eventList").prepend(html);
    var 
time2 = new Date();
    var 
zeit2 time2.getTime();
    var 
answer time2.getHours() + ":" time2.getMinutes() + ":" time2.getSeconds() + ":" time2.getMilliseconds();
    var 
diff = ((zeit2 zeit1)/1000)
    if(
diff "1"){
        $(
"#eventList").prepend("<li class=\"slowHead\">RQT: " request " | AWR: " answer " | LAST: " diff " seconds</li>");
    }else{
        $(
"#eventList").prepend("<li class=\"head\">RQT: " request " | AWR: " answer " | LAST: " diff " seconds</li>");
    }
    
    
window.setTimeout("update();"1000);
    })
    

Gruss

eXe
__________________
It's not a bug. It's a feature!
da.eXecutoR ist offline   Mit Zitat antworten
Alt 11.02.2011, 18:46  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von da.eXecutoR Beitrag anzeigen
Die Zeit bevor der Request abgeschickt wird
Und wie kommst du auf die lustige Idee, aus einer clientseitigen Zeitmessung irgendwelche Rückschlüsse darauf zu ziehen, wie lange etwas serverseitig dauert ...?

Ggf. braucht der IE etwas länger für einen HTTP-Request, dann ist das halt so.
Hat dann aber mit serverseitiger Performance absolut Nullkommanichts zu tun.

Wenn du Aussagen über das Serververhalten machen willst, dann solltest du auch serverseitig messen. Würde mich nicht wundern, wenn dabei im Mittel vergleichbare Zeiten herauskommen, egal ob der Client nun FF oder IE ist.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 11.02.2011, 18:55  
Erfahrener Benutzer
 
Registriert seit: 08.08.2009
Beiträge: 195
PHP-Kenntnisse:
Fortgeschritten
da.eXecutoR befindet sich auf einem aufstrebenden Ast
Standard

Chris, ich habe immer eine hohe Achtung vor dir und deinen Aussagen. Aber diesmal hast du wohl meinen Code nicht angeschaut

Ich erhalte mit der Ajax Request die Zeit auf dem Server:



A: Zeit vom Javascript bevor $.get aufgerufen wird
B: Zeit vom Javascript wenn $.get komplett ist und die Antwort da ist
C: Zeit zwischen A und B
D: Inhalt vom $.get aufgerufenen php file auf dem Server. Dort wird die Zeit am Anfang des PHP Files bis zum Ende des PHP Files gemessen und dann mit einem echo ausgegeben. Diese wird dir nachher in die html Seite mit prepend ausgegeben.

Danke für deine Zeit und Inputs!

Gruss

eXe
__________________
It's not a bug. It's a feature!
da.eXecutoR ist offline   Mit Zitat antworten
Alt 11.02.2011, 18:58  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Trotzdem findet bei dir die Messung auf dem Client statt. Und da spielen noch sehr sehr viele andere Faktoren eine Rolle. Möglicherweise kommt als erstes nen DNS Lookup, der kann schonmal etwas dauern. Danach muss der HTTP Request erst zum Server geschickt werden. Dann muss der Server anfangen das zu berechnen und dann muss wieder ein HTTP Response zurück geschickt werden. Und gerade die Übertragung im Internet ist alles andere als konstant. Da kann schnell mal passieren das etwas länger braucht! Dazu kommt dann auch noch dein Rechner, wie schnell er JavaScript verarbeitet und wie schnell Javascript auf die ankommende Nachricht reagiert. Das muss nicht immer bei jedem Aufruf gleich sein!

Wenn du wirklich das am Server messen willst dann hol dir die Zeit wenn du das PHP Skript startest und danach wenn das Skript fertig ist. Aber nehm nicht noch die Übertragung der Daten mit in die Messung.
Flor1an ist offline   Mit Zitat antworten
Alt 11.02.2011, 19:01  
Erfahrener Benutzer
 
Registriert seit: 08.08.2009
Beiträge: 195
PHP-Kenntnisse:
Fortgeschritten
da.eXecutoR befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Flor1an Beitrag anzeigen
Trotzdem findet bei dir die Messung auf dem Client statt. Und da spielen noch sehr sehr viele andere Faktoren eine Rolle. Möglicherweise kommt als erstes nen DNS Lookup, der kann schonmal etwas dauern. Danach muss der HTTP Request erst zum Server geschickt werden. Dann muss der Server anfangen das zu berechnen und dann muss wieder ein HTTP Response zurück geschickt werden. Und gerade die Übertragung im Internet ist alles andere als konstant. Da kann schnell mal passieren das etwas länger braucht! Wenn du wirklich das am Server messen willst dann hol dir die Zeit wenn du das PHP Skript startest und danach wenn das Skript fertig ist. Aber nehm nicht noch die Übertragung der Daten mit in die Messung.
siehe Post 5 (Ein unverständliches Server Performance Problem)

Gruss & danke

eXe
__________________
It's not a bug. It's a feature!
da.eXecutoR ist offline   Mit Zitat antworten
Alt 11.02.2011, 19:06  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Gehört dir der Server komplett alleine? Laufen noch andere Dienste auf dem Server?
Flor1an ist offline   Mit Zitat antworten
Alt 11.02.2011, 19:09  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von da.eXecutoR Beitrag anzeigen
Aber diesmal hast du wohl meinen Code nicht angeschaut
Du glaubst doch nicht, dass ich mir gleich erst mal zip-Files runterlade und entpacke
Und auf den Miniaturansichten der angehängten Grafiken war auch kaum was zu erkennen.

Zitat:
D: Inhalt vom $.get aufgerufenen php file auf dem Server. Dort wird die Zeit am Anfang des PHP Files bis zum Ende des PHP Files gemessen und dann mit einem echo ausgegeben.
Na gut ...

Also erst mal würde ich die while- und die for-Schleife[n] zum Zeit verbraten durch sleep ersetzen - andernfalls habe ich Zweifel daran, ob das überhaupt verlässliche Ergebnisse bringt.
Die includes sind eigentlich irrelevant, die haben ja nicht viel mehr Auswirkung, als Copy&Paste des jeweiligen Codes an die Stelle es hätte.

Ich würde mal testweise das session_start() rausnehmen (so wie ich das sehe, machst du ja sowieso nichts mit der Session), und dann schauen, ob das Auswirkungen hat.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 11.02.2011, 19:13  
Erfahrener Benutzer
 
Registriert seit: 08.08.2009
Beiträge: 195
PHP-Kenntnisse:
Fortgeschritten
da.eXecutoR befindet sich auf einem aufstrebenden Ast
Standard

Es ist ein Virtual Managed Server bei der KreativMedia.

Es spielt aber scheinbar keine Rolle, denn ich habe noch andere Server, auch dort shared hosting, wo ich genau das gleiche verhalten feststellen kann.

Ich habe das Skript angehängt, es braucht keine Konfiguration und kann einfach via FTP hochgeladen werden zum testen.

Das Problem ist dass ich viel stärkere Verzögerungen in meiner WebApplikation habe. Dort kommt es teilsvor dass die Serverzeit 20 Sekunden beträgt.

Rufe ich genau die selbe Funktion 2 Minuten später auf ist das ding in 0.02 Sekunden geladen.

Ich dachte zuerst das Performance Problem liegt an meinem PHP Code der Applikation. Darum habe ich das Test Script hier geschrieben.

Jetzt glaube ich aber eher daran dass es was anderes sein muss.

Zunächst hatte ich die Verbindung im Verdacht, dann wieder der Server selbst, mal wieder doch den PHP Code und jetzt verstehe ich die Welt nicht mehr.

Wie kann der Browser Einfluss auf die gemessene Zeit innerhalb einer PHP Datei haben?

Oder habe ich da etwas übersehen? Falsch verstanden?

Ich habe gerade wirklich eine Blockade, Ideen und Anregungen sehr willkommen

Danke euch Jungs!

eXe
__________________
It's not a bug. It's a feature!
da.eXecutoR ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Scope Problem Tviskjola PHP Tipps 2010 11 17.07.2010 19:06
Virtual Server: Installation von ISPConfig SvenLittkowski Server, Hosting und Workstations 19 18.06.2010 08:23
Problem mit Server -Response/Request Schlafbaer Scriptbörse 7 05.04.2010 21:56
Problem mit SERVER & REMOTE_ADDR dev83 Server, Hosting und Workstations 1 22.03.2010 12:06
[Erledigt] Apache install geht nicht SteiniKeule Server, Hosting und Workstations 7 27.02.2009 08:40
Problem mit SQLite(bzw. Server) coder Datenbanken 8 18.10.2007 14:51
Mysql SELECT Abfrage -- Problem mit LIMIT djrace Datenbanken 2 01.05.2006 12:58
[Erledigt] Problem mit date()-Funktion auf Windows Server... PHP-Fortgeschrittene 7 29.11.2005 21:22
Problem mit Verbindung von anderem Server Datenbanken 2 08.11.2005 13:43
[Erledigt] Problem beim verbindungsaufbau zum Mysql Server Datenbanken 9 27.10.2005 11:27
Apache HTTP Server hat ein Problem festgestellt ... PHP Tipps 2005-2 4 11.10.2005 01:32
Root Server Problem PHP Tipps 2005-2 27 11.07.2005 21:50
[Erledigt] Include Problem nach server wechsel PHP Tipps 2005 4 01.06.2005 00:42
Problem mit php unter windows server 2003 djrace PHP-Fortgeschrittene 2 24.12.2004 13:22
Debian Server, ddclient und SMC Router Problem. c01001 Server, Hosting und Workstations 6 09.12.2004 19:08

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
warum braucht firefox so so lange zum hochladen auf den server, ajax request messen, server performance problem, server performance messen, antwortzeiten messen mit ie8, apache anfrage ewig, dns antwortzeit messen php script, mysql performance messen, ie8 javascript laufzeit messen, \dienst antwortet nicht mehr: server\ win 7, jquery ajax zeitmessung, server request zeit messen, \der start des folgenden diensts dauert länger als 4 minuten bzw. der dienst antwortet nicht mehr: server\, client server performanceproblem, performance problem server, server request dauert ewig, php parse zeit ausgeben in sekunden, apache response messen, performanceprobleme server, ajax php performance

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:26 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum