Приспичило посмотреть что есть scgi и чем он лучше.
Тестил на lighttpd 1.49, возможно по этому результаты немного отличается от предыдущих тестов
Тестил при помощи ab на локалхосте. На простом приложении на web.py 0.23 для scgi:
slav0nic@sl:~$ cat /var/www/test/code.fcgi
#!/usr/bin/python2.5
import web, sys
urls = (
'/', 'index'
)
class index:
def GET(self):
web.header("Content-Type","text/html; charset=utf-8")
print web.ctx
web.wsgi.runwsgi = lambda func, addr=("127.0.0.1", 4000): web.wsgi.runscgi(func, addr)
if __name__ == '__main__':
sys.stderr = open("/dev/null", "a") #не выводим в консоль инфу о коннектах
web.run(urls, globals())
конфиг для mod_scgi:
scgi.server = ( "/code.fcgi" => ((
"host" => "127.0.0.1",
"port" => 4000,
"max-procs" => 1,
"bin-environment" => ("REAL_SCRIPT_NAME" => ""),
"check-local" => "disable")
))
для mod_fcgi:
fastcgi.server = ".fcgi" =>
(("bin-path"=>"/var/www/test/code.fcgi",
"socket" => "/tmp/python.socket",
"bin-environment" => (
"REAL_SCRIPT_NAME" => "",
"check-local" => "disable"),
"max-procs" => 1,
))
SCGI-приложение запускалось как простой файл ./code.fcgi c lighttpd общалось через tcp socket (через unix-socket оно похоже и не умеет, увы с доками к mod_scgi полная ж@#$). stderr редиректил в /dev/null, без этого на ~30-50 запросов в секунду меньше (при запусуке в gnome-terminal)
Длина документа примерно 2Кб.
Максимальное число запросов в секунду выделено жирным, 2й - курсив, выдача статики приведена просто для сравнения и интеерса не представляет =)
Итакс результаты:
more...