Назад | Перейти на главную страницу

настройка lighttpd для больших загрузок

Я запускаю веб-сайт, на котором размещены страницы, представляющие собой просто общие сценарии (php и т. д.) и загрузки в формате mp3 (некоторые из которых довольно большие - до 200 МБ). Я запускаю lighttpd на серверах в Linux (ubuntu 64). все в порядке, но при высокой нагрузке сервер недоступен (или очень медленный - даже загрузка занимает некоторое время), и я предполагаю, что это связано с огромным количеством скачиваний mp3 в то время. следовательно, dns видит сервер как неработающий и перенаправляет весь трафик на другие серверы, а через некоторое время он возвращается, и все снова работает.

так как лучше всего это исправить? в идеале я хочу, чтобы сервер продолжал работать (и веб-страницы - php и т. д. - всегда работали, но загрузки не всегда должны работать). Должен ли я иметь только 2 запущенных веб-сервера (один для загрузок и один для страниц 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. Отрегулируйте максимальное время простоя записи.

  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, это немного нестабильно. Для этого я бы использовал брандмауэр на уровне ОС / оборудования.