Я работаю над прокси-сервером нового типа, используя node.js. С модулем кластера я могу раскошелиться на процесс (который вдвое больше ядер). Конфигурация сервера - 8 ГБ ОЗУ, 8-ядерные процессоры Intel (Xeon), ограничение пропускной способности 500 МБ в месяц, и это Ubuntu Precise Machine. Однако не всю полосу пропускания мы можем использовать. Наши пользователи используют только 30 МБ в день. Мы хотим, чтобы наши пользователи использовали полную пропускную способность, но они не могут использовать, а также даже при ограничении в 30 МБ скорость низкая, поскольку сервер node.js перезапускается каждые 10 минут (среднее время) из-за зависания сокетов.

Сокеты зависают из-за некоторых необработанных исключений в node.js и node.js имеют тенденцию не отвечать и переходят в бесконечный цикл, затем один из процессов кластера умирает, и я вижу количество кластеров (все хорошо в 16 процессах), если число процессов в node.js падает до 14, есть cronjob, который убивает весь node.js и перезапускает весь прокси-скрипт.

Я изменил sysctl.conf, а также limit.conf. Вот эти файлы (sysctl.conf) http://pastebin.com/6Unvgayc и limit.conf http://pastebin.com/daLiSsYr. Пожалуйста, подскажите, если я не прав в этих настройках. Я новичок в настройке пропускной способности Linux-серверов, пожалуйста, дайте мне знать, если я что-то делаю или пропускаю

Спасибо, Сай

3 ответа3

1

Я подозреваю, что здесь есть путаница в терминах, вызывающая путаницу в том, что вы пытаетесь решить.

Поставщик услуг хостинга обычно предлагает объем трафика (часто называемый пропускной способностью) в месяц. Это может быть 500 МБ или 1 ТБ и т.д., В зависимости от предлагаемого плана. Если эта "пропускная способность" слишком мала, вы будете платить хостингу за чрезмерное потребление трафика. В целом, ваша цель как разработчика приложения состоит в том, чтобы сократить объем отправляемых и получаемых данных для каждого пользователя, потому что, в основном, меньше данных и одинаковое или лучшее удовлетворение пользователей и транзакций означают, что вы не отправляете лишние данные и взимать плату за бизнес (это очень общее правило, которое легко нарушить контрпримерами; однако, принцип отказа от отправки ненужных дополнительных данных хорош).

Пользователям веб-службы также нужна полоса пропускания, как это условно определено - объем данных, передаваемых за единичный интервал, обычно измеряется в битах в секунду. Это также обычно зависит от ограничений, установленных вашим поставщиком услуг хостинга, потому что вы делитесь ими с другими людьми и потому что в какой-то момент их подключение к Интернету будет ограничено. В хостинге (между машинами) вы можете смотреть на 1 Гбит / с (1 000 000 000 бит в секунду). Ваш хостинг может иметь ограничение в 30 МБ / с (небольшой хостинг, не близко к магистрали). Нет четкой взаимосвязи между этой "мгновенной" пропускной способностью, максимальной скоростью пакетной передачи, которую вы отправляете, и ежемесячным использованием данных (ежемесячная пропускная способность хостинга). Вы можете передавать данные с высокой скоростью, но использовать только небольшое количество. OTOH, если ваша максимальная скорость низкая, то вы не можете превысить месячную пропускную способность ... Но прежде чем это станет проблемой, пользователи будут жаловаться на производительность.

И это, вероятно, реальная проблема здесь. Спектакль. Я подозреваю, что клиенты жалуются, что дела идут недостаточно быстро. Это приводит к рассмотрению пропускной способности. Но это не проблема. Проблема производительности заключается в том, что ваши серверы заблокированы. Когда пользователь делает запрос, сервер начинает обработку, блокируется, а затем время ожидания клиента. Пользователь видит плохой сервис, а вы идете оптимизировать ... что?

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

1

Если ваше ежемесячное пособие составляет 500 МБ, а вы используете 30 МБ в день, вы уже превысили свой лимит. 30 МБ х 30 дней = 900 МБ. Это не проблема здесь, во всяком случае.

Похоже, основная проблема заключается в приложении node.js, а не в сервере. Вам не нужно разбирать файл node.js, поскольку любые существенно блокирующие задачи следует разбивать на асинхронные задачи. Вы теряете большинство преимуществ запуска node.js по сравнению с монолитными серверами, используя многопроцессорность в качестве основного механизма распространения. Основной цикл события node.js всегда должен иметь возможность принимать соединения, а исключения всегда должны обрабатываться или, по крайней мере, выполнять очистку (в этом случае закрытие сокетов и возврат в цикл обработки событий).

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

0

Пропускная способность - это общий термин, который может означать практически все. Я не понимаю, зачем вам использовать вашу пропускную способность полностью.

Есть два типа, которые вы можете искать:

Объем передачи данных вы можете сделать на свой сайт.

Количество данных, которое может пройти в определенное время. Используется в коммуникациях и сетях. Наличие большей пропускной способности, чем необходимо, позволяет сгладить пики использования.

Если данные задерживаются или теряются, ваши буферы сервера данных могут быть забиты и не будут принимать новые запросы. Они будут в нерабочем состоянии.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .