1

現在、flup と webpy を備えた lighttpd サーバーを使用しています。十分な速度で十分なリクエストを行うと (たとえば、リンクを何度も繰り返しクリックするか、Apache ベンチを実行すると)、Lighttpd は 500 内部サーバー エラーをスローします。この時点で、悪用するのは非常に簡単です (リンクを数回クリックするだけで破ることができます)。

Lighttpd コード:

fastcgi.server = (
    "/sm" => (
      ( "host" => "127.0.0.1",
        "port" => 7000,
        "check-local" => "disable",
      )
    )
)

私のlighttpdエラーログのエラー:

2012-11-09 16:17:32: (mod_fastcgi.c.3005) got proc: pid: 0 socket: tcp:127.0.0.1:7000 load: 15 
2012-11-09 16:17:32: (mod_fastcgi.c.2494) unexpected end-of-file (perhaps the fastcgi process died): pid: 0 socket: tcp:127.0.0.1:7000 
2012-11-09 16:17:32: (mod_fastcgi.c.3325) response not received, request sent: 1252 on socket: tcp:127.0.0.1:7000 for /sm , closing connection 
2012-11-09 16:17:32: (mod_fastcgi.c.1515) released proc: pid: 0 socket: tcp:127.0.0.1:7000 load: 14 

flup が応答しないため、lighttpd が壊れているように感じます。これで、問題にスレッドを追加するだけで問題が解決します (または、少なくとも悪用が難しくなります)。flup サーバーコード:

#!/usr/bin/python

from apps.main import app as main_app

# run as fastcgi
from flup.server.fcgi import WSGIServer
params = {
    'multiplexed': False,
    'bindAddress': ('127.0.0.1', 7000),
    'maxThreads': 9,  <---- If I move this up to 20 no more problems
}
server = WSGIServer(main_app.wsgifunc(), **params)
server.run()

これが flup の問題であると私が考えるもう 1 つの理由は、flup サーバーをバイパスして、要求を webpy に直接送信するプロキシを実行でき、問題がないためです。もっと洗練された解決策があれば、スレッドを立ち上げるだけではありません。フラップが壊れる原因を知っている人はいますか? それとも、これまでの私の結論は間違っていますか?

4

0 に答える 0