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

OSCHINA-MIRROR/laozi2-concurrent-tcp-client

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README
**Создание высоконагруженного клиентского приложения, осуществляющего одновременные запросы к 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 )

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

Введение

Делайте большие одновременные запросы по TCP-сокету, может использоваться как нагрузочный тест. Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
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