• This forum has a zero tolerance policy regarding spam. If you register here to publish advertising, your user account will be deleted without further questions.

proxy_fcgi:error The timeout specified has expired

Lord_Icon

Member
Bearbeitet habe ich das das in:
/etc/apache2/mods-available/fcgid.conf

Code:
<IfModule mod_fcgid.c>
  FcgidIdleTimeout 9999999
  FcgidProcessLifeTime 9999999
  FcgidConnectTimeout 9999999
  FcgidIOTimeout 9999999

  <IfModule mod_mime.c>
    AddHandler fcgid-script .fcgi
  </IfModule>
</IfModule>
MaxRequestLen 15728640

Aus frust schon utoptisch hoch eingestellt und den Apache2 neugestartet.
Leider bricht mein Script immer noch ab.

Gibt es eine PHP Anweisung, wo ich mir die Script Laufzeit ausgeben kann?
So dass ich kontrollieren kann, ob ich überhaupt die korrekte Datei bearbeite ?

Danke für Tipps
 
mod_fcgid != mod_proxy_fcgi

Welche PHP-Version ist denn wie genau in welche Apache-Version eingebunden?
Wie sehen die beiden Konfigurationen diesbezüglich aus?
 
In der Log steht folgendes:
Code:
[Wed Jan 16 13:03:32.959912 2019] [proxy_fcgi:error] [pid 2548] (70007)The timeout specified has expired: [client 192.168.0.50:49765] AH01075: Error dispatching request to : (polling)

Läuft unter PHP-fpm
Aktuell 5.6 da ich das Script auf 7.2 anpassen will.

@Joe User
"mod_fcgid != mod_proxy_fcgi"
Stimmt. Aber darüber finde ich gleich garkeine config die passen könnte.
Code:
[B]ls -lach | grep proxy[/B]
-rw-r--r-- 1 root root   87 Dez 26 11:08 proxy_ajp.load
-rw-r--r-- 1 root root  347 Dez 26 11:08 proxy_balancer.conf
-rw-r--r-- 1 root root  115 Dez 26 11:08 proxy_balancer.load
-rw-r--r-- 1 root root  822 Dez 26 11:08 proxy.conf
-rw-r--r-- 1 root root   95 Dez 26 11:08 proxy_connect.load
-rw-r--r-- 1 root root   95 Dez 26 11:08 proxy_express.load
-rw-r--r-- 1 root root   89 Dez 26 11:08 proxy_fcgi.load
-rw-r--r-- 1 root root   93 Dez 26 11:08 proxy_fdpass.load
-rw-r--r-- 1 root root  189 Dez 26 11:08 proxy_ftp.conf
-rw-r--r-- 1 root root   87 Dez 26 11:08 proxy_ftp.load
-rw-r--r-- 1 root root   93 Dez 26 11:08 proxy_hcheck.load
-rw-r--r-- 1 root root 2,5K Dez 26 11:08 proxy_html.conf
-rw-r--r-- 1 root root   97 Dez 26 11:08 proxy_html.load
-rw-r--r-- 1 root root   97 Dez 26 11:08 proxy_http2.load
-rw-r--r-- 1 root root   89 Dez 26 11:08 proxy_http.load
-rw-r--r-- 1 root root   62 Dez 26 11:08 proxy.load
-rw-r--r-- 1 root root   89 Dez 26 11:08 proxy_scgi.load
-rw-r--r-- 1 root root   97 Dez 26 11:08 proxy_wstunnel.load
 
Anbei mal meine phpinfo. Die liegt im gleichen Pfad wie mein Script. Unterliegt also den gleichen Einstellungen.
Ich finde da keine config für ein proxy. Ich weiß nciht, warum das für mein Script greift. max_exection_time ist auf unbegrenzt. proxy module sind nicht geladen (werden zumindest nicht angezeigt)... somit weiß ich echt nicht mehr weiter :mad:

Sieht einer mehr oder gleich den Schuldigen ?
Habt Dank !!!!
 

Attachments

  • phpinfo.pdf
    1.4 MB · Views: 148
PHP-FPM wird über das proxy_fcgi_module angebunden. Du schreibst nicht, was für ein Linux du verwendest. Unter Debian (unter Ubuntu wahrscheinlich auch) erfolgt die Konfiguration nicht über eine proxy_fcgi.conf, sondern über eine phpX.X-fpm.conf in conf-(available|enabled) - alternativ kann man das ganze natürlich auch im jeweiligen vHost konfigurieren, wenn man pro vHost unterschiedliche Einstellungen braucht.
 
hi danton,
da schau ich morgen nochmal ne halbe Minute drüber.
Aber mitunter bin ich soweit, dass ich das System neu aufsetze.
Da stimmt irgendwas nicht.

ICh habe mein Script gestern 3 mal aufgerufen und 3 verschiedene Zeitspannen zurückbekommen:
1: 25 Minuten und 45 Sekunden
2: 20 Minuten und 59 Sekunden
3: 17 Minuten und 0 Sekunden

Der Fehler hingegen ist immer der gleiche geblieben.
Und nein. zwischen den 3 Läufen habe ich nichts geändert.
Irgendwas stimmt da nicht.
Asoo.. Debian 9 mit ISP Config und PHP-FPM 5.6/7.0/7.1/7.2

alternativ kann man das ganze natürlich auch im jeweiligen vHost konfigurieren, wenn man pro vHost unterschiedliche Einstellungen braucht.
So sieht die von ispconfig aktuell aus.
Muß doch bestimmt wieder in ein bestimmten Bereichen ?
Vermutlich in den mod_proxy_fcgi.c


Code:
root@debian:~# cat /etc/apache2/sites-enabled/100-wawi.local.vhost

<Directory /var/www/wawi.local>
                AllowOverride None
                                Require all denied
                </Directory>

<VirtualHost *:80>

                                        DocumentRoot /var/www/clients/client0/web1/web

                ServerName wawi.local
                ServerAlias www.wawi.local
                ServerAdmin webmaster@wawi.local


                ErrorLog /var/log/ispconfig/httpd/wawi.local/error.log


                <IfModule mod_ssl.c>
                </IfModule>

                <Directory /var/www/wawi.local/web>
                                # Clear PHP settings of this website
                                <FilesMatch ".+\.ph(p[345]?|t|tml)$">
                                                SetHandler None
                                </FilesMatch>
                                Options +FollowSymLinks
                                AllowOverride All
                                                                Require all granted
                                                </Directory>
                <Directory /var/www/clients/client0/web1/web>
                                # Clear PHP settings of this website
                                <FilesMatch ".+\.ph(p[345]?|t|tml)$">
                                                SetHandler None
                                </FilesMatch>
                                Options +FollowSymLinks
                                AllowOverride All
                                                                Require all granted
                                                </Directory>




                <IfModule mod_fastcgi.c>
                                <Directory /var/www/clients/client0/web1/cgi-bin>
                                                                                Require all granted
                                                                    </Directory>
                                <Directory /var/www/wawi.local/web>
                                        <FilesMatch "\.php[345]?$">
                                                SetHandler php-fcgi
                                        </FilesMatch>
                                </Directory>
                                <Directory /var/www/clients/client0/web1/web>
                                        <FilesMatch "\.php[345]?$">
                                                SetHandler php-fcgi
                                        </FilesMatch>
                                </Directory>
                Action php-fcgi /php-fcgi virtual
                                Alias /php-fcgi /var/www/clients/client0/web1/cgi-bin/php-fcgi-*-80-wawi.local
                FastCgiExternalServer /var/www/clients/client0/web1/cgi-bin/php-fcgi-*-80-wawi.local -idle-timeout 300 -socket /var/lib/php7.0-fpm/web1.sock -pass-header Authorization  -pass-header Content-Type
                </IfModule>
                <IfModule mod_proxy_fcgi.c>
                        #ProxyPassMatch ^/(.*\.php[345]?(/.*)?)$ unix:///var/lib/php7.0-fpm/web1.sock|fcgi://localhost//var/www/clients/client0/web1/web/$1
                        <Directory /var/www/clients/client0/web1/web>
                                <FilesMatch "\.php[345]?$">
                                                SetHandler "proxy:unix:/var/lib/php7.0-fpm/web1.sock|fcgi://localhost"
                                </FilesMatch>
                        </Directory>
                        </IfModule>



                # add support for apache mpm_itk
                <IfModule mpm_itk_module>
                        AssignUserId web1 client0
                </IfModule>

                <IfModule mod_dav_fs.c>
                # Do not execute PHP files in webdav directory
                        <Directory /var/www/clients/client0/web1/webdav>
                                <ifModule mod_security2.c>
                                        SecRuleRemoveById 960015
                                        SecRuleRemoveById 960032
                                </ifModule>
                                <FilesMatch "\.ph(p3?|tml)$">
                                        SetHandler None
                                </FilesMatch>
                        </Directory>
                        DavLockDB /var/www/clients/client0/web1/tmp/DavLock
                        # DO NOT REMOVE THE COMMENTS!
                        # IF YOU REMOVE THEM, WEBDAV WILL NOT WORK ANYMORE!
      # WEBDAV BEGIN
                        # WEBDAV END
                </IfModule>



</VirtualHost>




root@debian:~#
 
Last edited by a moderator:
Da Du ja bereits >12 Jahre SSF auf dem Buckel hast:
Welchen Teil der offiziellen Dokumentationen zu Apache und PHP hast Du nicht verstanden?
 
Offiziell... ?? na DIE zeig mir mal, die auf PHP-fpm und proxy set eingeht.
ICH für MEINEN Fall finde da recht wenig

Aber gut. Lt. einer Doku (nix offiziell) timeout hinten dran hängen.
Damit ich nicht immer 15+in warten muß, mal 1 genommen, was ja THEORETISCH sofort ein logeintrag werfen müsste.
Script läuft aber munter weiter. Schon mehrere Minuten.
Scheint HIER also nicht korrekt zu sein
Code:
<IfModule mod_proxy_fcgi.c>
     #ProxyPassMatch ^/(.*\.php[345]?(/.*)?)$ unix:///var/lib/php7.0-fpm/web1.sock|fcgi://localhost//var/www/clients/client0/web1/web/$1
     <Directory /var/www/clients/client0/web1/web>
            <FilesMatch "\.php[345]?$">
                 SetHandler "proxy:unix:/var/lib/php7.0-fpm/web1.sock|fcgi://localhost [COLOR="Red"][B]timeout=1[/B][/COLOR]"
              </FilesMatch>
     </Directory>
 </IfModule>
 
Last edited by a moderator:
Offiziell... na dDIE zeig mir mal, die auf PHP-fpm und proxy set eingeht.
ICH für MEINEN Fall finde da recht wenig
https://httpd.apache.org/docs/2.4/en/mod/mod_proxy_fcgi.html
https://secure.php.net/manual/en/install.fpm.php

Aber gut. Lt. einer Doku (nix offiziell) timeout hinten dran hängen.
Und genau deswegen ist es auch keine offizielle Doku, denn diesen Parameter gibt es nämlich nicht:
https://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/modules/proxy/mod_proxy_fcgi.c?view=markup



Kurz: PHP ist verantwortlich und nicht Apache. Wenn PHP hierfür keine Konfiguration anbietet, dann musst Du halt Deine App so umbauen, dass das Problem nicht mehr auftritt...
Letzteres musst Du eh machen, also mache es besser jetzt...
 
Kurz: PHP ist verantwortlich und nicht Apache. Wenn PHP hierfür keine Konfiguration anbietet, dann musst Du halt Deine App so umbauen, dass das Problem nicht mehr auftritt...
Letzteres musst Du eh machen, also mache es besser jetzt...

Der Umbau erfolgt auf mysql zu mysqli und anderen abfragen.
Nicht aber das Script selbst. Es werden unmal mehrere Millionen Datensätze durchsucht und ggf. geupdatet. Das dauert halt.
 
Dann nutzt Du schlicht die falsche PHP-Variante:
Für soetwas nutzt man PHP-CLI und keine andere Variante.
Oder eine geeignetere (Script-)Sprache...
 
Nicht aber das Script selbst. Es werden unmal mehrere Millionen Datensätze durchsucht und ggf. geupdatet. Das dauert halt.

Hört sich nach einem klassischen Fall für eine Aufgabe auf der Kommandozeile an (PHP-CLI), um diese Daten zu verarbeiten - evtl. sogar, falls das regelmäßig passiert, in Verbindung mit einem Cronjob. Dann können die Einschränkungen bez. Laufzeit im Webserver auch bleiben, hat ja schon seinen Grund, dass es diese gibt.
 
Das Script läuft Nachts um 3 Uhr und wird über ein Cron angestoßen.
Läuft je nach Veränderungen 3-5h. Also ja. PHP-CLI

Da ich es aber umbauen möchte und mit flush und so echtzeit-Ausgaben programmiert habe, will ich es im Browser gern mitverfolgen.

Aber egal. System wird heute platt gemacht und auf Debian 8 rückgesetzt. Da hatte es wenigstens funktioniert.

Danke für die zahlreichen Hilfen
 
Das funktioniert dann aber auch nur, wenn du um 3 Uhr im Browser das Script aufrufst. Sinnvolle Lösung: Script per PHP-CLI laufen lassen, Statusmeldungen z.B. in eine Log-Datei schreiben und mit einem weiteren Script vom Browser aus diese Log-Datei pollen - dann kannst du dich zu einem beliebigen Zeitpunkt zwischendurch an die Ausgabe dranhängen.
 
Back
Top