Как я могу обнаружить и выжить, будучи "Slashdotted"? - PullRequest
47 голосов
/ 20 октября 2008

Какой хороший способ выжить в условиях аномально высоких пиков трафика?

Я думаю, что по какой-то причине мой веб-сайт должен временно переключиться в режим «низкой пропускной способности»: переключиться на базовые HTML-страницы, минимальную графику, отключить виджеты, которые могут создать ненужную нагрузку на базу данных, и т. Д.

Мои мысли:

  • Мониторинг загрузки процессора
  • Пропускная способность монитора
  • Мониторинг запросов / минута

Редактировать: Я знаком с такими опциями, как кэширование, переключение на статический контент или сеть доставки контента и т. Д. В качестве средства для выживания, поэтому, возможно, следует сосредоточиться на том, как обнаруживать, когда сайт собирается стать перегруженным. (Хотя ответы на другие методы выживания, конечно, все же приветствуются.) Допустим, веб-сайт работает под управлением Apache на Linux и PHP. Это, вероятно, самая распространенная конфигурация, и она должна позволить максимальному количеству людей получить помощь от ответов. Предположим также, что дорогие варианты, такие как покупка другого сервера и балансировка нагрузки, недоступны - по крайней мере, для большинства из нас упоминание о Slashdot будет случайным явлением, а не чем-то, на что мы можем потратить деньги, готовясь к .

Ответы [ 30 ]

2 голосов
/ 20 октября 2008

Положи в облако!

Это, вероятно, не относится к личным блогам и т. Д., Но для больших сайтов облачный хостинг решит эту проблему. Например, в Amazon EC2 эта стратегия заключается в том, что она будет стоить вам кучу денег.

В меньших масштабах, использование CDN для всех ваших изображений / статического контента также может помочь, опять же, оценка цены важна. Amazon S3 - это CDN, о котором я больше всего слышу.

2 голосов
/ 20 октября 2008

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

1 голос
/ 17 сентября 2008

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

1 голос
/ 17 сентября 2008

Есть несколько способов, которыми это можно сделать или хотя бы помочь. Поищите в Google «slashdot-proof», и вы найдете их несколько:

  • Slashdot-защищает ваш сервер с FreeCache - Boing Boing
  • Простой Мысли Блог теперь Slashdot Доказательство

и т.д.

1 голос
/ 17 сентября 2008

Никогда не станет популярным.

Хотя это будет работать, это не очень полезно. Необходимая инфраструктура, которая может масштабироваться очень быстро. Что-то вроде Google Gears или веб-сервисов Amazon кажется идеальным для этого, поскольку даже Slashdot не собирается перегружать Google или Amazon. Если вы хотите иметь свой собственный сервер, убедитесь, что ваш сетевой провайдер не собирается отключать вас при любом заданном пределе пропускной способности. Купите достаточно оборудования, чтобы вы не напрягались, просто чтобы нести нормальный трафик без каких-либо проволочек, чтобы справиться с внезапными скачками.

1 голос
/ 02 января 2009

netstat -plant | awk '$4 ~ /:80\>/ {print}' | wc -l

Это покажет вам все соединения с сервером Apache. Вы можете создать скрипт cgi, который будет рассчитывать общее количество подключений к службе Apache и выдавать предупреждение, когда оно достигает определенного порога. Что делать в этот момент - это другой вопрос.

Надеюсь, ваш сервер подготовлен.

1 голос
/ 20 октября 2008

Вы также можете использовать Nagios для мониторинга состояния сервера. Исходя из ваших требований, при определенных условиях вы можете запустить существующий файл SQL для переключения режимов для вашего сайта.

Например, добавьте «UPDATE settings_table SET bandwidth = 'low';" в этот файл SQL и запустите его в mysql и сделайте наоборот, когда условия вернутся в нормальное состояние.

1 голос
/ 21 октября 2008

nearfreespeech.net - это, так сказать, полузлаковое облако, которое очень помогает в таких ситуациях. Как уже упоминалось выше, многоуровневое кэширование очень помогает. Извлекайте куски информации из memcached вместо базы данных, перед вами обратный прокси-сервер (или распределенный обратный прокси-сервер, известный как CDN, Panther Networks).

1 голос
/ 20 октября 2008

Увеличьте уровень кэширования в БД, чтобы содержимое могло быть немного устаревшим, но доступ к нему стал быстрее. Естественно, это применимо только в том случае, если содержание не должно быть согласованным на 100%.

1 голос
/ 20 октября 2008

Используйте кеширование!

Если вы используете WordPress (например), вы можете использовать что-то вроде WP-Super-Cache . Если вы используете обычный PHP, есть еще ряд опций, которые вы можете использовать, включая memcache . Или вы можете просто использовать обычное кэширование в стиле Squid Proxy.

Любое кэширование, которое вы используете, поможет пуленепробиваемому (или slashdot / digg-proof) вашему сайту: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...