The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Низкая производительность из libpq"
Отправлено koteg, 08-Июн-16 20:27 
>>> разберись, сколько у тебя транзакций в первом и во втором случаях.
>> А как это сделать?
>> Насколько я понимаю, в случае скрипта - 1 транзакция, а в случае
>> libpq - 10000.
>> Но даже в этом случае, деградация в 141 раз - это за
>> гранью добра и зла.
> Т.е то, что в 10 000 раз большее число транзакций выполняется всего
> в 141 раз медленнее - это уже плохо? Отличная логика, правда
> несколько странная :-)

140 операций записи 8ми байт + служебной информации в секунду. Т.е. 1120 байт полезной информации можно сохранить за секунду.... маловато...


>> Всего 140 операций вставки в секунду (в таблицу с одним столбцом int8)
>> - это что-то странное. Т.к. Постгрес используется на нагруженных проектах, то
>> значит что-то я делаю не правильно.
> Посмотри, какую нагрузку на диски дает твой тест.
> 140 операций в секунду, это примерно и есть средняя производительность жесткого диска
> на случайных операциях. Или ты считаешь, что транзакция завершается "в воздух",
> а не записью на жесткий диск? Если транзакция не завершилась записью
> на диск - значит это не транзакция, а только её подобие.

нагрузка на диск идёт непропорциональная. Такое ощущение, что в каждой транзакции вставляется не 8 байтов, а десятки мегабайтов. На сервере стоят быстрые винты, тест производительности показывает 2.2 GB/s.
Вот как грузит CPU и IO Постгрес (синие палки - операции IO, зелёные - CPU):
Как вставить картинку - не знаю, поэтому дал ссылки:

http://s017.radikal.ru/i421/1606/e1/5f78641fa4c4.jpg

Время: 73 сек, процессор всё время ожидает операции ввода/вывода. На сохранение 80000 байт на диск не похоже.

А вот работа диспетчера заданий (это и есть целевое приложение) на mongodb (сервер этот же) - запись в БД и обработка 10000 заданий (всего около 50000 атомарных операций с БД, каждая запись примерно 96 байт), плюс запуск 10000 процессов php-fpm (обработчиков заданий).

http://s018.radikal.ru/i523/1606/c0/37650c524261.jpg

Время: ~6.3 сек (дебаговая сборка без оптимизации. С оптимизацией 5.5 сек), грузится практически только процессор, сохранение на диске занимает мизерное время.

Судя по всему, я что-то не так делаю, но не знаю в какую сторону рыть.

>> Через libpq после каждой операции должен выполняться автокоммит, он и выполняется.
>> Не выполнять его нельзя, т.к. запросы приходят от обработчиков сетевых соединений -
>> каждый запрос - атомарная транзакция, которая добавляет/изменяет данные в БД.
> Должен, можно, нельзя... Это всё условности.

Автокоммит должен выполняться по логике приложения. После поступления запроса данные должны сразу быть доступны в БД для процесса обработки.

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру