суббота, 11 декабря 2010 г.

вторник, 7 декабря 2010 г.

эхо-сервер и 15000 запросов в секунду

В своём прошлом посте я жаловался на быстродействие казалось бы тривиального эхо-сервера. При разборе archimag'овского сервера с 10000 запросами в секунду обратил внимание, что он использует пул буферов чтения-записи. Собственно, идея то не нова, но скопипащенный ex8-server.lisp из IOLIB тогда почему-то не привлёк моё внимание отсутствием пула. Добавление его убыстрило эхо-сервер более, чем в 10 раз. На моём стареньком ноуте он теперь обрабатывает порядка 15000 запросов в секунду против 1200. На другой машинке (Core i5 с пониженной частотой при множителе 13, где-то около 1200 ГГц) порядка 35000-40000 запросов в секунду. Также стоит отметить, что эхо-сервер не сбрасывает сам соединение, а держит сеанс. В противном случае могло бы быть ещё быстрее.

суббота, 4 декабря 2010 г.

iolib и эхо-сервер

Недавно тут озаботился написанием tcp-сервера. Эксперименты решил начать с простого эхо-сервера. Да и в примерах iolib'ов он был. Ну, значит, запустил я его и решил испытать на стрессовые нагрузки. Для этого я использовал тулзу jmeter. Так вот, что выяснилось. При даже 100 параллельных запросах не все доходит правильно до клиента. И где-то 2% теряется (на моей машине). Вариант эхо-сервера, написанного на C, который я взял в том же iolib - на 100 обходится без ошибок. Правда на 1000 уже где-то 1% появляется. Вариант с использованием IOLIB - 10%. И вот меня тут смутило немного - а правильно ли я вообще понимаю всё? И неужели простому эхо-серверу так сильно становится плохо? Быстро накиданный вариант на java, который выделяет отдельные потоки на клиента - вообще 97% ошибок показал. С java.nio (асинхронная модель) не пробовал, потому как к этому времени уже изрядно расстроился.

среда, 1 декабря 2010 г.

Обновление REPO 20101201

Очередное пополение в lisp-репизотрии для Ubuntu и Debian.

  • iolib - версия 0.7.3.