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

Статическая загрузка файла из браузера ломается в лаке, но отлично работает в Apache

Сначала я хотел бы поблагодарить всех на serverfault за этот замечательный веб-сайт, и я также захожу на этот сайт, когда ищу в Google различные проблемы и настройки, связанные с сервером.

У меня также есть проблема сегодня, поэтому я публикую здесь и надеюсь, что пожилые люди помогут мне. Несколько дней назад я установил веб-сайт на выделенном сервере и использовал Varnish 3 в качестве интерфейса для Apache2 на сервере Debian Lenny, поскольку трафик был немного большим. На веб-сайте можно загрузить несколько статических файлов размером около 10-20 МБ. В последние несколько дней после настройки сайт выглядел нормально. Я проверял через широкополосное соединение со скоростью 5 Мбит / с и загрузка файлов также завершалась за секунды и работала нормально.

Но сегодня я понял, что при медленном интернет-соединении загрузка файлов прерывается. Когда я попытался загрузить файлы с веб-сайта с помощью браузера, через минуту или около того он прервался. Это продолжалось снова и снова, так что это не имело ничего общего с подключением к Интернету. Скорость подключения к Интернету составляла около 512 кбит / с, поэтому это была не скорость коммутируемого доступа, а приличная скорость, при которой файлы должны загружаться легко, хотя и не так быстро.

Затем я подумал о том, чтобы попробовать бэкэнд-порт apache и использовал номер порта, чтобы проверить, возникает ли проблема. Но затем при добавлении порта apache в URL-адрес загрузки статического файла файлы загружались легко и не ломались ни разу. Я пробовал это несколько раз, чтобы убедиться, что это не совпадение, но каждый раз, когда я использовал порт apache в URL-адресе загрузки файла, он загружался нормально, хотя каждый раз он ломался с нормальной ссылкой, которая была маршрутизирована через Varnish, я полагаю . Итак, похоже, что Varnish каким-то образом привел к прерыванию загрузки файлов.

Может ли кто-нибудь дать представление о том, почему это происходит и как решить проблему.

Для большей ясности возьмите этот пример:

Бэкэнд Apache установлен на порт 8008, внешний интерфейс Varnish установлен на порт 80

Теперь, когда я скачиваю, скажи

http://mywebsite.com/directory/filename.extension

Затем загрузка прерывается примерно через минуту. Я не могу быть уверен, что это связано со временем или размером, и я просто предполагаю. Может быть и другая причина.

Но когда я загружаю, используя:

http://mywebsite.com:8008/directory/filename.extension

Тогда загрузка файла вообще не прерывается, и загрузка выполняется нормально.

Итак, похоже, что лак каким-то образом нарушает загрузку файла, а не apache. Кто-нибудь знает, почему это происходит и как это исправить. Любая помощь будет высоко ценится.

А мой лак default.vcl -

    backend apache {
      set backend.host = "127.0.0.1";
      set backend.port = "8008";
    }

    sub vcl_deliver {
      remove resp.http.X-Varnish;
      remove resp.http.Via;
      remove resp.http.Age;
      remove resp.http.Server;
      remove resp.http.X-Powered-By;
    }

Вы достигли лимита send_timeout для Varnish. Значение по умолчанию для send_timeout было 600 с, в Varnish 3.0 оно было изменено на 60 с. Это может помешать загрузке более 60 с.

Вы можете проверить значение параметра send_timeout с помощью varnishadm:

varnishadm param.show send_timeout

Это выведет что-то вроде:

send_timeout           60 [seconds]
                       Default is 60
                       Send timeout for client connections. If the HTTP
                       response hasn't been transmitted in this many
                       seconds the session is closed. 
                       See setsockopt(2) under SO_SNDTIMEO for more
                       information.

                       NB: This parameter may take quite some time to
                       take (full) effect.

Вы можете установить его на 600 с:

varnishadm param.set send_timeout 600s

Чтобы сделать этот параметр постоянным, вы должны добавить «-p sendtimeout 600» к параметрам запуска Varnish. Это зависит от используемого вами дистрибутива. В случае Debian / Ubuntu вы можете захотеть отредактировать / etc / default / varnish.