Ergebnis 1 bis 18 von 18

Thema: Composer - PHP Memory Limit - Composer as a service

  1. #1
    Contao-Fan
    Registriert seit
    16.05.2014.
    Beiträge
    295

    Standard Composer - PHP Memory Limit - Composer as a service

    Hi,
    vor ein paar Monaten habe ich die "Out of Memory" Meldung während einer Extension Installation zum Anlass genommen mal einen alten 1und1 Vertrag zu aktualisieren (~30 MB Memory limit auf ~90MB).
    Jetzt habe ich das problem wieder bei einem anderen Hoster mit 72MB Limit (Metamodels Installation).

    Naürlich sind 72 MB nicht viel aber sehe ich das falsch, wenn ich denke, dass Contao vermehrt auch auf "kleineren" Hosting Paketen eingesetzt wird?
    Wenn ich das richtig verstehe wird das Problem mit jeder neuen Extension(-version und -abhängigkeit) größer.
    Man kann die Extensions natürlich auch per FTP installieren o.ä.
    Aber wenn der Composer zum Standard wird könnte ich mir vorstellen, dass das einige betreffen wird?

    Seitens Composer scheint das recht komplex zu sein und dort gibt es Fälle, in denen 1GB Ram und mehr nicht ausreicht (vermutlich kommen da Contao Extension nicht so schnell ran...).

    Könnte man das zumindest teilweise umgehen, indem man die Abhängigkeiten zumindest für einige größere Extensions Serverseitig vorrausberechnet?
    Interessant fand ich auch
    http://composer.borreli.com/
    funktioniert allerdings wie ich das sehe so noch nicht mit den Contao Repositories.

    Znrl

  2. #2
    Contao-Urgestein Avatar von tril
    Registriert seit
    07.01.2010.
    Ort
    Bad Marienberg
    Beiträge
    2.939
    User beschenken
    Wunschliste

    Standard

    1. Unser größtes Problem ist aktuell dass wir mit "minimum-stability:dev" arbeiten. Dadurch braucht Composer unmengen mehr Ressourcen als wenn es mit "minimum-stability:stable" betrieben würde.

    2. Ich habe auf meinem Server und auch auf meinem lokalen Entwicklungssystem lediglich 128 MB RAM und komme damit in der Regel aus.

    3. Ich habe jetzt erst ein "kleineres" Strato Hosting Paket von einem Kunden gehabt, der hatte schon 128 MB RAM und da lief Composer Problemlos
    "Klein" ist also nicht gleich "Klein" und sogar bei 1&1 bekommt man bei den aktuellen Paketen schon deutlich mehr Leistung (teilweise bis zu 512MB RAM laut der 1&1 Hilfe). Man muss dem Kunden ggf. nur klar machen sein Paket zu "aktualisieren" auf ein "neues" (nicht auf ein "größeres"), oftmals spart der Kunde dabei sogar Geld.

    4. 1GB RAM? Das war vielleicht 2013, als Composer noch nicht so gut optimiert war. Das größte was ich in den letzten Monaten brauchte waren um die 256 MB RAM. Und dann hatte ich schon Avisota + MetaModels installiert. Ja ich weiß der Contao Check und Composer Check sagen was anderes, aber diese sind auch etwas älter und prüfen quasi noch "alte" Anforderungen. Composer ist über das ganze Jahr trotz seines Wachstums immer Ressourcensparender geworden. Selbst bei meinem Symfony Projekten brauche ich nicht so viel Speicher.

    5. Das mit dem "composer as a service", ich kann es auf der einen Seite verstehen (deshalb gibt es dazu auch ein Ticket: https://github.com/contao-community-...ent/issues/134), auf der anderen Seite hat die Sache einen Hacken: Sie wird niemals mit privaten Paketen funktionieren! Ich für meinen Teil wäre dann direkt raus, ich habe immer ein privates Repository für das Website-Projekt
    Aber auch Nutzer von kommerziellen Erweiterungen fallen dann einfach raus.



    Wir sollten lieber zu sehen, dass wir beim "Contao Package Manager" der gerade in Vorbereitung ist und der Nachfolger vom "cca/composer-client" wird, von dem "minimum-stability:dev" runter kommen, dann sollten wir auch kleinere Hostings deutlich besser unterstützen können.
    Geändert von tril (14.11.2014 um 07:31 Uhr)

  3. #3
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.718
    User beschenken
    Wunschliste

    Standard

    @ Znrl habe https://composer.borreli.com/ ausprobiert - mit Erfolg

    bin aktuell bei 1und1 - nicht meine Entscheidung - und die 256MB RAM reichen nicht :-( ... aber es gibt einen SSH-Zugang

    mein Vorgehen:
    * in Paketverwaltung die Pakete soweit anwählen
    * in Pakteverwaltung zur JSON-Anzeige (Paketverwaltung > Einstellungen > Expertenmodus)
    * JSON kopieren und in https://composer.borreli.com/ einfügen
    * in JSON bei "repositories" alle weiteren Einträge löschen - darf nur noch setehen
    Code:
        "repositories": [
            {
                "type": "composer",
                "url": "https://legacy-packages-via.contao-community-alliance.org/"
            }
        ]
    * auf "Go" klicken und warten, bis Download-Button erscheint (kann etwas dauern...)
    * ZIP downloaden und Datei composer.lock und composer.json per FTP auf Server hoch laden in Ordner /composer
    * per SSH auf Shell in Ordner /composer wechseln
    * "/usr/bin/php5.5-cli composer.phar install" ausführen
    * in Paketverwaltung Datenbankupdate starten

    ... damit wurden bei mit auch mit "nur" 256MB-RAM die Pakete installiert :-)

    Edit: ggf. könnte man die Shell auch noch umgehen mit
    * https://github.com/CurosMJ/NoConsoleComposer
    * http://phpshell.sourceforge.net/
    ... alles nicht ideal, aber bis das Speicherdilemma irgendwann gelöst ist eine (Not)Lösung

  4. #4
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.094
    Partner-ID
    10107

    Standard

    @zonky: hast du bei 1&1 den detached mode schon probiert? Eben mit
    Code:
    /usr/bin/php5.5-cli

  5. #5
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.718
    User beschenken
    Wunschliste

    Standard

    klar! sowohl aus dem BE als auch direkt auf Konsole...

    "er" will etwa 360MB haben und ich habe nur ein Bundle (Bootstrap von Netzmacht)

  6. #6
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.094
    Partner-ID
    10107

    Standard

    Das heißt, über den detached mode läufst du genau so in ein memory limit? Wie hoch war da das memory limit bspw.?

  7. #7
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.718
    User beschenken
    Wunschliste

    Standard

    das "Übliche"...

    Code:
    /usr/bin/php5.5-cli -d memory_limit=1G -d max_execution_time=900 composer.phar update --no-ansi --no-interaction --profile
    ich kann da auch "5G" rein schreiben - wenn mehr als 256M nicht drin sind, ist es eben so...

  8. #8
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.094
    Partner-ID
    10107

    Standard

    Nein ich meinte, wieviel Speicher hast du dann bspw. zur Verfügung, wenn du die Aktion ausführst. Oder anders gefragt: welche Fehlermeldung kommt.

  9. #9
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.718
    User beschenken
    Wunschliste

    Standard

    ich meine auch "das Übliche"

    Code:
    uiserver):u12345678:~/contao-2016/composer$ /usr/bin/php5.5-cli -d memory_limit
    =1G -d max_execution_time=900 composer.phar update --no-ansi --no-interaction --
    profile
    [10.0MB/0.01s] Loading composer repositories with package information
    [10.4MB/1.41s] Updating dependencies (including require-dev)
    
    Fatal error: Out of memory (allocated 612368384) (tried to allocate 32 bytes) in
     phar:///homepages/32/d12345678/htdocs/contao-2016/composer/composer.phar/src/C
    omposer/DependencyResolver/RuleSetGenerator.php on line 205
    (uiserver):u12345678:~/contao-2016/composer$
    inzwischen ein zweites Paket mit hinzu genommen - nun sollen es 612,36MB werden... das nächste Paket hat nur 512MB :-(

  10. #10
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.094
    Partner-ID
    10107

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    Code:
    uiserver):u12345678:~/contao-2016/composer$ /usr/bin/php5.5-cli -d memory_limit
    =1G -d max_execution_time=900 composer.phar update --no-ansi --no-interaction --
    profile
    [10.0MB/0.01s] Loading composer repositories with package information
    [10.4MB/1.41s] Updating dependencies (including require-dev)
    
    Fatal error: Out of memory (allocated 612368384) (tried to allocate 32 bytes) in
     phar:///homepages/32/d12345678/htdocs/contao-2016/composer/composer.phar/src/C
    omposer/DependencyResolver/RuleSetGenerator.php on line 205
    (uiserver):u12345678:~/contao-2016/composer$
    Ok, das heißt es sind (zumindest zu diesem Zeitpunkt) für den Prozess 584 MiB zur Verfügung gestanden.


    Zitat Zitat von zonky Beitrag anzeigen
    inzwischen ein zweites Paket mit hinzu genommen - nun sollen es 612,36MB werden... das nächste Paket hat nur 512MB :-(
    Es kann auch sein, dass das unabhängig vom Paket ist - bzw. es in Wirklichkeit nur von der Server Umgebung des jeweiligen Pakets abhängt.

  11. #11
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.718
    User beschenken
    Wunschliste

    Standard

    ich habe - auch wenn das Paket etwas anders heist - i.E. das "1und1 Starter"
    http://hilfe-center.1und1.de/hosting...a10795590.html

    und

    Code:
    (uiserver):u12345678:~/contao-2016/composer$ php -i | grep memory_limit
    <tr><td class="e">memory_limit</td><td class="v">256M</td><td class="v">256M</td
    ></tr>
    bzw.

    Code:
    (uiserver):u12345678:~/contao-2016/composer$ /usr/bin/php5.5-cli -i | grep memory_limit
    memory_limit => 256M => 256M

  12. #12
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.094
    Partner-ID
    10107

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    Code:
    (uiserver):u12345678:~/contao-2016/composer$ /usr/bin/php5.5-cli -i | grep memory_limit
    memory_limit => 256M => 256M
    Offensichtlich standen dir aber wie schon erwähnt 584 MiB zur Verfügung. Das memory_limit ist über die Command Line normalerweise ausgehebelt, aber die Server Umgebung könnte trotzdem dynamisch dem PHP Prozess verweigern, mehr Speicher zu beanspruchen. Versuche mal
    Code:
    /usr/bin/php5.5-cli -r "echo(ini_get('memory_limit'));"
    auszuführen.

  13. #13
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.718
    User beschenken
    Wunschliste

    Standard

    Code:
    /usr/bin/php5.5-cli -r "echo 'MEM: '.(ini_get('memory_limit'));"
    Ausgabe: MEM: 256M

  14. #14
    Contao-Fan Avatar von markocupic
    Registriert seit
    06.12.2010.
    Ort
    Oberkirch (Schweiz)
    Beiträge
    660

    Standard

    probier mal:
    composer update --prefer-stable

    Liebe Grüsse
    Marko
    Anfragen für bezahlten Support oder Extension-Programmierung via PN.

  15. #15
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.718
    User beschenken
    Wunschliste

    Standard

    steht schon drin...

    Code:
    {
        "name": "local/website",
        "description": "A local website project",
        "type": "project",
        "license": "proprietary",
        "require": {
            "bootstrap-select/bootstrap-select": ">=1.11.2.0,<2-dev",
            "contao-bootstrap/bundle": ">=1.0.0.0,<2-dev",
            "contao-community-alliance/composer-client": "~0.12"
        },
        "prefer-stable": true,
        "minimum-stability": "stable",
        "config": {
            "preferred-install": "dist",
            "cache-dir": "cache",
            "component-dir": "../assets/components"
        },

  16. #16
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.718
    User beschenken
    Wunschliste

    Standard

    ... komisch ist, wenn ich den CLI-Aufruf nicht direkt auf der Konsole mache, sondern über das BE kommt in der Paketverwaltung

    Code:
    /usr/bin/php5.5-cli -d memory_limit=1G -d max_execution_time=900 composer.phar update --no-ansi --no-interaction --profile
    sh: 1: /usr/bin/php5.5-cli: not found
    bei identischem Aufruf
    Code:
    /usr/bin/php5.5-cli -d memory_limit=1G -d max_execution_time=900 composer.phar update --no-ansi --no-interaction --profile
    auf der Konsole ist alles prima...??

  17. #17
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.943

    Standard

    same here :-(

    Da aber der Speicher ohnehin nicht reicht, habe ich diesbezüglich nie weiter geforscht.
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  18. #18
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.718
    User beschenken
    Wunschliste

    Standard

    dieser Memory-Mist kann einem wirklich den Spaß verderben :-(

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •