0 / 0 / 0
Регистрация: 24.07.2015
Сообщений: 36
1

c++ и mysql/mariadb работаю крайне медленно

11.01.2020, 17:26. Показов 861. Ответов 0

Всем привет. Делаю https сервер на с++, все ок, при обычном запросе на endpoint типа index.html получаю хороший результат:

PowerShell
1
2
3
4
5
6
7
8
9
wrk -c 100 -t4 -d 60 https://192.168.1.229:4443
Running 1m test @ https://192.168.1.229:4443
  4 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    10.13ms    2.26ms  86.18ms   92.04%
    Req/Sec     2.48k   281.47     3.16k    79.18%
  592886 requests in 1.00m, 113.08MB read
Requests/sec:   9867.43
Transfer/sec:      1.88MB
Если же делаю, POST с запросом в базу все намного хуже:

PowerShell
1
2
3
4
5
6
7
8
https://192.168.1.229:4443/test
  4 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   464.48ms   89.61ms 610.73ms   84.31%
    Req/Sec    52.71     34.63   222.00     65.37%
  11978 requests in 1.00m, 2.65MB read
Requests/sec:    199.31
Transfer/sec:     45.16KB
Я понимаю, что это более ресурсоемкая операция, требующая больше времени выполнения, но не в 50 же раз медленее...

Пробовал разные драйвера для коннекта mysql, mariadb++, mariadbcpp (в примере кода) везде результат +/- одинаковый. Сам запрос по себе не тяжелый, возвращает одну строчку, напрямую в mariadb выполняет 0.00031960.

Пример кода:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
nlohmann::json PostResult = {};
const char *uri = "tcp://192.168.1.130:3306/test";
                const char *user = "root";
                const char *passwd = "123";
 
                MariaCpp::scoped_library_init maria_lib_init;
 
                try {
                    MariaCpp::Connection conn;
                    conn.connect(MariaCpp::Uri(uri), user, passwd);
 
 
 
 
                    std::auto_ptr<MariaCpp::PreparedStatement> stmt(conn.prepare("SELECT a.id, a.msg_id, a.NUMBER, a.sign FROM chiffa a WHERE a.id =1"));
                    stmt->execute();
                    while (stmt->fetch()) {
 
 
                        PostResult["id"] = stmt->getInt(0);
                        PostResult["msg_id"] = stmt->getString(1);
                        PostResult["NUMBER"] = stmt->getString(2);
                        PostResult["msg_id"] = stmt->getString(3);
 
 
 
                    }
                    conn.close();
                }
                catch (MariaCpp::Exception &e) {
                    std::cerr << e << std::endl;
 
                }
Подскажите, кто знает, как достигнуть максимально производительности

Добавлено через 12 минут
Сделал соединение с базой постоянным, результат по-лучше:

PowerShell
1
2
3
4
5
6
7
8
9
wrk -c 100 -t4 -d 60 -s post.lua https://192.168.1.229:4443/test
Running 1m test @ https://192.168.1.229:4443/test
  4 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   203.25ms   27.53ms 263.01ms   85.31%
    Req/Sec   121.44     37.90   474.00     77.80%
  28535 requests in 1.00m, 6.31MB read
Requests/sec:    475.08
Transfer/sec:    107.64KB
но все равно, хотелось хотя бы 70% от максимума...
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.01.2020, 17:26
Ответы с готовыми решениями:

Алгоритм заливки экрана цветом работает крайне медленно
Недавно начал изучать с++ и для того что бы залить одним цветом весь экран я использую такой цикл ...

Я очень медленно работаю. Как исправить это?
Здравствуйте, уважаемые профессионалы. Я работаю в веб-студии почти безымянного города Украины...

Почему крайне медленно индексируются страницы гуглом?, сделал максимум что мог в плане СЕО
Всем привет! Есть вот такой сайт афоризмов - сайт афоризмов aforizmus.com (самопис) Что...

Почему MariaDB, а не MySQL?
Всю жизнь пользовался MySQL на различных хостингах, и был вполне счастлив. Сейчас пытаюсь поднять...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.01.2020, 17:26
Помогаю со студенческими работами здесь

MySQL или MariaDB
Подскажите, есть ли разница между этими СУБД в плане подключения к ним из стороннего приложения и...

Внешний доступ к MySQL (MariaDB) извне
Пошарился в интернете нашол много по MySQL и открытие доступа для вне. Но все что там было написано...

переезд с lightt + mariadb 5.x на nginx + php-fpm + mariadb
Доброго времени суток, коллеги. Имею такую проблему: Ранее был lighttpd на centos 7.X, всё...

Работаю с mySQL под WIN2K, возникло несколько вопросов
Работаю с mySQL под WIN2K, возникло несколько вопросов: 1) Есть ли визуальная среда для работы с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru