配置 lighttpd 进行大容量下载

配置 lighttpd 进行大容量下载

我运行一个网站,该网站托管的页面只是一般的脚本(php 等)和 mp3 下载(其中一些相当大 - 高达 200mb)。我在 Linux(ubuntu 64)上的服务器上运行 lighttpd。一切都很好,但是在高负载下,服务器无法访问(或者非常慢 - 即使 ssh 也要花一段时间),我猜这是由于当时大量的 mp3 下载造成的。因此,dns 认为服务器已关闭并将所有流量重定向到其他服务器,一段时间后,它又恢复正常。

那么解决这个问题的最佳方法是什么?理想情况下,我希望服务器继续运行(并且网页 - php 等 - 始终工作,但下载不一定总是工作)。我应该只运行 2 个 Web 服务器吗(一个用于下载,一个用于 php 页面),或者我是否可以在 lighttpd 配置中修复它?

以下是我的配置片段:

server.max-worker = 4
server.max-fds = 2048
server.max-keep-alive-requests = 4
server.max-keep-alive-idle = 4
server.stat-cache-engine = "fam"

fastcgi.server    = ( ".php" => 
        ((
                "bin-path" => "/usr/bin/php-cgi",
                "socket" => "/tmp/php.socket",
                "max-procs" => 1,
                "idle-timeout" => 20,
                "bin-environment" => ( 
                        "PHP_FCGI_CHILDREN" => "64",
                        "PHP_FCGI_MAX_REQUESTS" => "1000"
                ),
                "bin-copy-environment" => (
                        "PATH", "SHELL", "USER"
                ),
                "broken-scriptfilename" => "enable"
        ))
)

# normal php site
$HTTP["host"] =~ "bar.com" {
    server.document-root = "/usr/local/www/sites/bar.com/"
    accesslog.filename = "|/usr/sbin/cronolog /var/log/lighttpd/%m/%d/%H/bar.log"
}

# download site
$HTTP["host"] =~ "(download|stream).foo.com" {
   server.document-root = "/home/audio/"
   dir-listing.activate = "enable"
   dir-listing.hide-dotfiles = "enable"
   evasive.max-conns-per-ip = 1
   evasive.silent = "enable"
#   connection.kbytes-per-second = 256
   accesslog.filename = "|/usr/sbin/cronolog /var/log/lighttpd/%m/%d/%H/download.log"
}

答案1

一些事情:

  1. 调整最大写入空闲时间。

  2. 不要在提供静态内容的服务器上运行 FCGI/PHP,它会减慢您的速度并在各处附加垃圾会话数据。

  3. 禁用任何类型的错误/访问日志。

  4. 添加缓存条目:setenv.add-response-header = ( "Cache-Control" => "public, max-age=86400" )

  5. 使用 mod_expire:expire.url = ("/mp3s/" => "访问 2 年")

    不要使用 connection.kbytes-per-second,它有点不稳定。我会为此使用操作系统/硬件级防火墙。

相关内容