1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/laozi2-concurrent-tcp-client

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
README 3.3 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 26.11.2024 21:20 ddf88dd
**Создание высоконагруженного клиентского приложения, осуществляющего одновременные запросы к TCP-сокету: вариант использования для нагрузочного тестирования**
**Установка:**
* Без использования библиотеки jemalloc:
* gcc -g -o test common.c config.c flog.c ngx_rbtree.c ngx_event_timer.c zmalloc.c test.c
* С использованием библиотеки jemalloc:
1. Установка библиотеки jemalloc (на примере компиляции с Redis):
* 1.1 Скачивание архива jemalloc-3.6.0.tar.bz2 в текущую директорию с помощью команды wget http://www.canonware.com/download/jemalloc/jemalloc-3.6.0.tar.bz2.
* 1.2 Распаковка архива командой tar xf jemalloc-3.6.0.tar.bz2; cd jemalloc.
* 1.3 Настройка сборки с параметрами --with-jemalloc-prefix=je_ --enable-cc-silence CFLAGS="-std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops " LDFLAGS="" командой ./configure.
* 1.4 Сборка библиотеки командой make CFLAGS="-std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops " LDFLAGS="" lib/libjemalloc.a.
2. Компиляция программы с использованием библиотеки jemalloc и параметров компиляции:
* gcc -DUSE_JEMALLOC -I./jemalloc/include/ -g -o test common.c config.c flog.c ngx_rbtree.c ngx_event_timer.c zmalloc.c test.c jemalloc/lib/libjemalloc.a -ldl -lpthread -lrt.
**Высокопроизводительное клиентское приложение:**
Использование epoll для асинхронного неблокирующего режима работы, реализация высокой производительности на одном потоке по аналогии с механизмом событий nginx с добавлением неблокирующих таймеров.
**Примечание:**
1. Для удобства чтения и записи обрабатываются только запросы и ответы с протоколом 4-байтного заголовка и тела. Более сложные протоколы требуют индивидуальной реализации в соответствии с конкретными требованиями.
2. Тестовые данные запросов предварительно генерируются и загружаются в память для повышения эффективности.
3. Логическая проверка не выполняется, обработка содержимого возвращаемых значений не производится, и единичное тестирование не проводится.
4. Программа имеет простую и эффективную функциональность, которая может быть легко модифицирована для непосредственного использования или служить источником кода для вторичного развития.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/laozi2-concurrent-tcp-client.git
git@api.gitlife.ru:oschina-mirror/laozi2-concurrent-tcp-client.git
oschina-mirror
laozi2-concurrent-tcp-client
laozi2-concurrent-tcp-client
master