LINUX.ORG.RU

Мой прокси сервер слишком медленный

 , , ,


0

4

Ребята, возникла задача написать прокси сервер под линуксы на сишке. Вот я написал и сервак очень сильно лагает, тупит и не может загрузить ютуб видео банально. Ребята, помогите, я не знаю почему он такой медленный, я вроде все по потокам разбил (на каждый поток по 64 сокета) и юзаю асинхронные сокеты для poll'инга

Буду благодарен если вы хотя-бы просто посмотрите и подскажите что мне переделать

Вот исходник https://pastebin.com/yMSNJcCz

Код — нечитаемая лапша. Желания копаться в нём немного. Могу посоветовать воспользоваться профилировщиком (gprof, например), чтобы понять, где происходит затык и какую функцию стоит улучшать на предмет оптимизаций. Повторять, пока лаги не пройдут

XMs ★★★★★
()

тракторист? для начала разбей код по файлам (логические части отвечающие за функционал) чтоб стало возможным пойнять чтотамутебянаписановкоде.

anonymous
()
Ответ на: комментарий от anonymous

Я так и делал с самого начала, но эффект был тот же самый

MikkotoNikki
() автор топика
Ответ на: комментарий от anonymous

Код достачно простой, да и к тому же мне нужно его будет встроить как плагин. Помню когда писал FTP сервак, вот там да, на файлы нужно было разбивать

MikkotoNikki
() автор топика
Ответ на: комментарий от Sorcerer

proxy_thread_loop вызывается в цикле, который находится в функции proxy_worker_thread_loop, которая кстати и указана в pthread_create. Согласен, _loop может запутать

MikkotoNikki
() автор топика

Выкладывай логи (с таймстампами), strace (без лишних event-ов) и свои догадки. Возиться в чужой простыне никому не хочется.

snizovtsev ★★★★★
()

Первое, что бросается в глаза pthread_mutex_lock(&server.lock); покрывает большую часть кода.

AlexVR ★★★★★
()

Прогони код через indent, эту срань читать невозможно.

kirk_johnson ★☆
()

Алсо возьми libev, не пиши ивентлуп руками, так делают только гомосексуалисты.

kirk_johnson ★☆
()
Последнее исправление: kirk_johnson (всего исправлений: 1)

Чувак самый хитрожопый чтоле? Я набыдлокодил 500 строк - найдите где у меня проблема. Забесплатно потратьте полчаса вашего времени. perf top - и вперёд профилировать! И дебаги ставить. А вообще зуб даю все на мютексах висит. Код не читал.

repu1sion
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.