Сначала я хотел бы поблагодарить всех на 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.