Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
503使用apache/wsgi在日志中没有跟踪_Apache_Logging_Mod Wsgi_Http Status Code 503 - Fatal编程技术网

503使用apache/wsgi在日志中没有跟踪

503使用apache/wsgi在日志中没有跟踪,apache,logging,mod-wsgi,http-status-code-503,Apache,Logging,Mod Wsgi,Http Status Code 503,我的Flask应用程序定期返回503个错误。我说不出原因。可能与负载有关。它不是系统性的,因此不是文件权限问题。它更像是在10个后续请求上执行5次。在浏览器中使用F5易于复制 我想调试它,但在日志中找不到任何东西 我已经检查了apache主日志文件(访问/错误)和VirtualHost访问/错误日志文件。我尝试将LogLevel设置为调试,但没有效果 当应用程序返回一个503(例如,使用Flask的abort(503))时,错误会记录在virtualhost访问日志中(这不是apache错误,因

我的Flask应用程序定期返回503个错误。我说不出原因。可能与负载有关。它不是系统性的,因此不是文件权限问题。它更像是在10个后续请求上执行5次。在浏览器中使用F5易于复制

我想调试它,但在日志中找不到任何东西

我已经检查了apache主日志文件(访问/错误)和VirtualHost访问/错误日志文件。我尝试将
LogLevel
设置为调试,但没有效果

当应用程序返回一个
503
(例如,使用Flask的
abort(503)
)时,错误会记录在virtualhost访问日志中(这不是apache错误,因此会记录在访问日志中)。它也会记录在我的应用程序日志中,因为我的框架会记录所有http错误

我在过去遇到过加载问题,没有可用的线程。这导致apache本身返回503个错误,我很确定这些错误记录在access或错误日志中(很可能是错误)

客户机怎么可能得到503,而日志中没有它的踪迹?

虚拟主机配置摘录:

    ErrorLog ${APACHE_LOG_DIR}/my-app-error.log
    CustomLog ${APACHE_LOG_DIR}/my-app-access.log combined

    WSGIDaemonProcess my-app threads=5
    WSGIScriptAlias /api /srv/my-app/application.wsgi process-group=my-app application-group=%{GLOBAL}
    WSGIPassAuthorization On

    <Location /api>
        WSGIProcessGroup my-app
    </Location>

    <Directory /srv/my-app/>
        Options FollowSymLinks
        AllowOverride All
    </Directory>
重启后

● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2018-12-04 11:13:23 CET; 2 weeks 0 days ago
  Process: 10023 ExecReload=/usr/sbin/apachectl graceful (code=exited, status=0/SUCCESS)
  Process: 536 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
 Main PID: 977 (apache2)
    Tasks: 133 (limit: 4915)
   Memory: 1.7G
      CPU: 6d 6h 3min 51.105s
   CGroup: /system.slice/apache2.service
           ├─  977 /usr/sbin/apache2 -k start
           ├─10066 /usr/sbin/apache2 -k start
           ├─10067 /usr/sbin/apache2 -k start
           ├─10068 /usr/sbin/apache2 -k start
           ├─10069 /usr/sbin/apache2 -k start
           ├─16834 /usr/sbin/apache2 -k start
           └─16836 /usr/sbin/apache2 -k start
● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2018-12-19 12:32:02 CET; 3s ago
  Process: 11840 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCESS)
  Process: 11735 ExecReload=/usr/sbin/apachectl graceful (code=exited, status=0/SUCCESS)
  Process: 11850 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
 Main PID: 11854 (apache2)
    Tasks: 79 (limit: 4915)
   Memory: 125.3M
      CPU: 4.080s
   CGroup: /system.slice/apache2.service
           ├─11854 /usr/sbin/apache2 -k start
           ├─11855 /usr/sbin/apache2 -k start
           ├─11856 /usr/sbin/apache2 -k start
           ├─11857 /usr/sbin/apache2 -k start
           └─11858 /usr/sbin/apache2 -k start

我在这里看到的区别是进程的数量(不知道该如何总结)和内存使用。好的,应用程序似乎对内存有点贪婪,但我认为服务器可以处理这一点。

首先,您查看访问日志了吗?因为如果没有错误日志,这意味着服务器已被访问,因此访问日志中必须有某些内容。 如果有,检查烧瓶是否确实可用

其次,您是否代理请求?如果这样做,请确保代理配置正常


当然,请确保您的mod_wsgi配置为

,以防有所帮助:我们遇到过类似的问题,一个flask wsgi应用程序间歇性返回
503
(比如,每5-10个请求一次)

手动测试显示,相应的请求没有显示在apache访问日志中(而成功的请求则显示在日志中)

正如在的回答中所暗示的,apache配置确实也包含了其他应用程序的代理配置,我们对其中一个
ProxyPass
指令使用了
keepalive=On
关键字(不是针对flask应用程序,而是针对使用相同前缀的另一个应用程序)。摘录:

    <Location /curated-cofs>
        WSGIProcessGroup curated-cofs   # this is the flask app
    </Location>

    <Location /curated-cofs/optimade>
        ProxyPass http://localhost:3759 keepalive=On timeout=1200
        ProxyPassReverse http://localhost:3759
    </Location>

WSGIProcessGroup策划的cofs#这是flask应用程序
ProxyPasshttp://localhost:3759 keepalive=On超时=1200
ProxyPassReversehttp://localhost:3759
实际上,我们没有理由在这里使用
keepalive
关键字(没有内部防火墙)


从ProxyPass指令中删除关键字似乎解决了flask应用程序的
503
问题,这是一个副作用。

>“我检查了apache主日志文件(访问/错误)和VirtualHost访问/错误日志文件。我尝试将LogLevel设置为debug,但没有效果。”我在Ubuntu18.04.2版本的libapache2 mod wsgi 4.5.17中也遇到了同样的问题。这个问题已经很老了,我无法再复制它了,但这可能会对未来的读者有所帮助。