php.de

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

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 22.10.2010, 22:11  
Neuer Benutzer
 
Registriert seit: 11.02.2009
Beiträge: 6
sebkrack befindet sich auf einem aufstrebenden Ast
Standard PHP-SOAP-Webservice Speicherprobleme

Hallo und guten Abend zusammen,

folgender Sachverhalt:

Ich betreibe einen SOAP-Webservice mit Apache+PHP, die Server Anwendung ist hierbei from scratch selbst entwickelt, ohne irgendwelche SOAP-Klassen o.ä.

Folglich werden an den entsprechenden Server HTTP Nachrichten mit XML im Body versendet.

Nun zu meinem Problem:
Solange die Requests klein waren gab es nie Probleme. Die Request Größe betrug nie mehr als 1MB.

Da unser Kunde nun auch größere SOAP Nachrichten über diesen Webservice abwickeln möchte (ca. 15 MB) treten nun gehäuft Probleme auf: überschreiten des eingestellten memory_limits von 130 MB bei einer Request Größe von 15 MB!

Ein Teil des Problems ist sicher in meinem Code zu suchen, ich werde hier noch optimieren können mithilfe der Funktion memory_get_usage(). Das stellt kein Problem dar.

ABER: wenn ich in der ALLERERSTEN ZEILE meines PHP-Scriptes mir memory_get_usage() ausgeben lasse, habe ich bei besagter 15MB XML Nachricht bereits eine Speichernutzung von 46,1MB. Nach Auslesen von "php://input" kommen nochmal 15MB drauf (klar) so dass ich also wegen einem 15MB File mit einer Speicherauslastung von 61,1MB erst mit der Verarbeitung beginnen kann.

Da es ein hochfrequentierter Webservice ist, können wir uns einen so hohen Speicherverbrauch nicht leisten. Weiss jemand von euch woran es liegt, dass der Apache-PHP-Prozess offensichtlich bereits mit der 3-Fachen Requestgröße + x im Speicher gestartet wird? Eine Lösung wäre es für mich auch, wenn ich nach Auslesen von "php://input" die 45MB direkt wieder freigeben kann.

Ich hoffe Ihr könnt mir helfen und bedanke mich im Vorraus.

Grüße
sebkrack ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 22.10.2010, 22:37  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

Je nach php-einstellungen steht der inhalt in
$HTTP_RAW_POST_DATA
-> http://www.php.net/manual/en/ini.cor...-raw-post-data

also könnte es deinen speicherverbrauch runterbringen wenn du raw-post-data deaktivierst (falls aktiviert)

ansonsten mal noch schauen ob vielleicht auch $_POST irgendwas drin hat.

ansonsten mal schauen ob dir xdebug weiterhilft:

http://derickrethans.nl/xdebug-and-t...ory-usage.html
robo47 ist offline   Mit Zitat antworten
Alt 23.10.2010, 00:53  
Neuer Benutzer
 
Registriert seit: 11.02.2009
Beiträge: 6
sebkrack befindet sich auf einem aufstrebenden Ast
Standard

Danke für die Antwort. Das xdebug sieht verdammt cool aus, das werde ich Montag direkt mal ausprobieren zum optimieren.

$HTTP_RAW_POST_DATA ist gefüllt und bringt mir tatsächlich 15MB Ersparnis, da ich dann das Auslesen von php://input einsparen kann. $_POST ist allerdings leer.

Damit ist nur leider die memory usage zu beginn des Scripts immer noch 3x so hoch wie die Größe des XML-Files...

Hält vielleicht der Apache und das PHP Modul jeweils nochmal die Daten irgendwo vor? Oder gibt es vielleicht eine Setting, so dass ein temp-file benutzt wird anstatt der Speicher? Das wäre zwar auch nicht gerade performant aber besser als 2 unnötige Kopien im Speicher irgedwo zu haben? Ehrlichgesagt kann ich mir irgendwie kaum vorstellen dass der Apache mit PHP-Modul so blöd gecodet ist, dass so viel unnötiger Speicher verbraucht wird?

Danke aber schonmal für den Hinweis auf xdebug
sebkrack ist offline   Mit Zitat antworten
Alt 23.10.2010, 09:47  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

Apache hat imho erstmal nix mit dem speicherverbrauch von php zu tun, also wenn dann müsste das von php her rühren, lediglich eine Sache fällt mir ein die das ganze "langsamer" machen könnte und das wäre wenn der apache ein ausgefallenes log-format verwendet wo POST-daten mitgeloggt werden, aber das sollte sich nicht auf den speicherverbrauch von php irgendeinen einfluss haben.

Hast du mal ein paar Details zu apache/php-version, phpinfo() und so ? sprich auch welche module mitlaufen und soweiter, eventuelle prepend-scripts, etc.
Laufen vielleicht schon irgendwelche debugger wie xdebug oder ähnliches mit ? inwieweit kommt ein bytecode-cache (apc, xcache, ... ) zum einsatz ...
robo47 ist offline   Mit Zitat antworten
Alt 25.10.2010, 11:45  
Neuer Benutzer
 
Registriert seit: 11.02.2009
Beiträge: 6
sebkrack befindet sich auf einem aufstrebenden Ast
Standard

Hi,

prepend Scripte verwende ich keine, ein bytecode-cache kommt nicht zum einsatz. debugger laufen aktuell auch keine mit.

ich poste mal die ausgabe von phpinfo()
sebkrack ist offline   Mit Zitat antworten
Alt 25.10.2010, 11:48  
Neuer Benutzer
 
Registriert seit: 11.02.2009
Beiträge: 6
sebkrack befindet sich auf einem aufstrebenden Ast
Standard

Anbei phpinfo html-formatiert als zip.

danke für die hilfe
Angehängte Dateien
Dateityp: zip phpinfo_sebkrack.zip (10,4 KB, 8x aufgerufen)
sebkrack ist offline   Mit Zitat antworten
Alt 25.10.2010, 13:26  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

Also auf Anhieb fällt mir da nichts auf, aber dein PHP ist mehr als 4 Jahre alt (August 2006) ... da könnten sich schon ein paar Bugs und kram angesammelt haben, das sollte vielleicht mal geupdatet werden, vielleicht wirst du damit dein problem los.
robo47 ist offline   Mit Zitat antworten
Alt 25.10.2010, 14:20  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nett
Standard

Ein ganz simpler Trick bei großen XML Dateien: verkürze die Namen von Attributen und Tags auf ein absolutes Minimum (falls möglich). Sprechende Bezeichner sind zwar toll, blähen aber die XML Datei extrem auf.

Kann aber gut sein, das dieser Weg für dich nicht praktikabel ist, da dein Webservice ja scheinbar bereits im Einsatz ist...
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz ist offline   Mit Zitat antworten
Alt 25.10.2010, 14:49  
Neuer Benutzer
 
Registriert seit: 11.02.2009
Beiträge: 6
sebkrack befindet sich auf einem aufstrebenden Ast
Standard

Hallo Isteglitz,

wie du schon vermutet hast ist das nicht praktikabel, da die WSDLs vorgegeben sind. Zudem besteht das XML-File zu 99,99% aus Base64
sebkrack ist offline   Mit Zitat antworten
Alt 25.10.2010, 14:54  
Neuer Benutzer
 
Registriert seit: 11.02.2009
Beiträge: 6
sebkrack befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von robo47 Beitrag anzeigen
dein PHP ist mehr als 4 Jahre alt (August 2006) ...
ja leider, das liegt nicht in meiner Hand. Ich hoffe unsre Sysadmins bald von einem PHP-Update überzeugen zu können
sebkrack 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
PHP und SOAP timeout Yuen PHP Tipps 2010 1 06.07.2010 12:12
Soap Webservice ignoriert base64 codierte .png kn0wledge PHP-Fortgeschrittene 4 25.12.2009 21:46
Probleme mit SOAP über HTTPS - Timeouts soesti PHP Tipps 2009 0 30.09.2009 14:44
PHP Soap Webservice aufrufen Zender JavaScript, Ajax und mehr 4 11.10.2008 20:08
SOAP Dokumentelstil Mad_Dog PHP-Fortgeschrittene 2 19.09.2008 20:27
Fragen und Verwendung der SOAP Erweiterung von PHP Tanja PHP-Fortgeschrittene 5 15.09.2008 09:29
SOAP Webservice mit Dokument in der Response phpBone PHP-Fortgeschrittene 9 04.09.2008 23:16
Suche Hilfe Webservice Soap / PHP5 manfred$ Beitragsarchiv 1 06.08.2008 19:22
Größenbeschränkung bei PEAR SOAP Antwort? Anotherone PHP-Fortgeschrittene 1 13.01.2008 20:32
php5 soap extension, soap attachment zcmaster PHP-Fortgeschrittene 0 07.08.2006 16:09
SOAP und PHP cola PHP-Fortgeschrittene 21 01.06.2006 11:33
WebService über NUSOAP gibt NULL (leeres result) zurück andre_shd PHP-Fortgeschrittene 4 16.05.2006 14:12
[Erledigt] Asynchroner Webservice mit NUSOAP PHP-Fortgeschrittene 1 22.01.2006 13:18
[Erledigt] XML String an Webservice übergeben (SOAP) PHP-Fortgeschrittene 3 26.08.2005 12:40
[Erledigt] Performance Fragen zu PHP4/OOP und SOAP RPC Webservice PHP-Fortgeschrittene 4 26.05.2005 14:35

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php soap performance, apache php module speicher, php soap webservice base64 attachments, soap php server auslastung, php prozesse soap timeout, soap speicher de, php webservice attachment, apache2 speicher soap mb, nusoap webservice base64binary übergeben, webservice 15 mb, php soap apache problem, websevice speicher, 15 mbyte mit webservice, php speicherauslastung problem, php soap dateigröße, webservice für große dateien, soap server php performance, webservice soap größe, soap zip datei übergeben php, php soap optimierung

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:40 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