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

Как снизить частоту чтения с диска на сервере?

В настоящее время мы размещаем на нашем веб-сервере библиотеку галерей изображений емкостью 3 ТБ, и все они доступны для поиска пользователями. При наличии около 400 активных пользователей на веб-сайте в определенное время чтение с диска приводит к 100% загрузке ввода-вывода, и это похоже на то, что это может стать узким местом. Все это вызвано фактическим чтением изображений, а не базой данных (которую мы кэшируем в ОЗУ с помощью Redis). Мы не думаем, что использование чего-то вроде Varnish поможет нам, так как чтения в значительной степени случайны - у нас есть около 7 миллионов изображений, и ни одна из групп не получает значительно большего количества чтений, чем другие, насколько мы можем судить. Мы используем бесплатный план Cloudflare, но, похоже, он не помогает. Мы просто не можем позволить себе полноценный CDN, поскольку мы используем около 10 ТБ пропускной способности в месяц, а это будет стоить тысячи долларов.

Масштабируйте по горизонтали, а не по вертикали. Вместо того, чтобы всю работу выполнять один сервер, настройте на то же самое множество. Не все они могут содержать одни и те же данные, что позволяет получить доступ меньшему набору. Hadoop может быть одним из способов сделать это. Другой может быть просто в том, как он закодирован. размещение множества маленьких серверов за лаком определенно могло бы вам помочь.

Даже без модного программного обеспечения сегментирование домена - это способ снизить нагрузку на один узел: http://mvark.blogspot.com/2009/06/what-is-domain-sharding_17.html