Дописал поддержку keepalive, ловлю в ключевых местах все исключения. Но этот момент можно улучшать ещё долго. Стабильность кода значительно увеличилась.
Померил более достоверными средствами производительность. Окружение: запросы на http://ya.ru, контент которого закэширован моей домашней прокси (Squid). Запросы идут через wlan. Флуд-атака 40-а конкурентными пользователями. Организовал с помощью siege. Строчка запуска: siege -t 30s -b -c 40 http://ya.ru >/dev/null
Результаты 30-секундной атаки:
Через oProxy:
Transactions: 1767 hits
Availability: 100.00 %
Elapsed time: 30.08 secs
Data transferred: 6.24 MB
Response time: 0.67 secs
Transaction rate: 58.74 trans/sec
Throughput: 0.21 MB/sec
Concurrency: 39.27
Successful transactions: 1767
Failed transactions: 0
Longest transaction: 4.14
Shortest transaction: 0.21
Напрямую:
Transactions: 1390 hits
Availability: 100.00 %
Elapsed time: 29.83 secs
Data transferred: 4.91 MB
Response time: 0.83 secs
Transaction rate: 46.60 trans/sec
Throughput: 0.16 MB/sec
Concurrency: 38.78
Successful transactions: 1390
Failed transactions: 0
Longest transaction: 3.65
Shortest transaction: 0.10
Внимательный читатель заметит, что напрямую эффективность даже хуже как по конкурентности, так и по общей производительности (лучше по минимальному и максимальному времени ответа). По общей производительности хуже получилось аж на четверть. Причины сего явления ещё предстоит выяснить. Грешу на буферизацию.
Кстати, заняло это проксирование 0.22 секунды процессорного времени (в предыдущем измерении допустил ошибку). Т.е. около 0.00012 секунды на запрос.