Коляденко Владимир Анатольевич : другие произведения.

Как я Postgis в 300 раз ускорил и заработал миллиард

"Самиздат": [Регистрация] [Найти] [Рейтинги] [Обсуждения] [Новинки] [Обзоры] [Помощь|Техвопросы]
Ссылки:


 Ваша оценка:


Как я Postgis в 300 раз ускорил и заработал миллиард.

  
   Жила была обычная база Postgis. В ней дома: координаты, адрес, код улицы, еще что хочешь. Сделал для теста REST API, какое отдает дом по запросу координат.
   Начал тестировать производительность. Большинство дальнейших цифр -- ошибочны. Первый результат -- 56 ответов в секунду.
   Вспомнил одну штуку. Для указания множества параметров нужно было прописать свой DataSource. И я по быстрому использовал DriverManaged... У него нет пула соединений и каждый раз создается новое.
   Перешел на Hikari Pool. Скорость стала 400. И, как я не оптимизировал/тестировал -- практически не менялась. Потом запустил тест с двух машин и в несколько экземпляров -- коннектов стало больше! Понял, что где-то ошибся. Оказывается, я изначально ограничил ThreadPool 2 потоками, чтоб не сильно нагружать машину. Сделал потоков как надо. Скорость достигла 1700 rps. Загрузка ЦП сервера БД 100%.
   Потом я все-таки включу геометрический индекс GIST. Прикол в том, что индексов не было только в этой таблице. Возможно, это была некачественная копия С кешированием получили около 4700.
   Сейчас клиент и сервер были на дев-машине. Упор был именно в нее. Я перенес Java-сервер на машину БД. Так было уже в районе 8000+.
   Но и этот результат неверен. Тестовый клиент загружен на 100%. Из них процентов 70 -- ужасным антивирусом ESET. Пришлось переносить клиент на 3й сервер.
   Тут вся полезная нагрузка на одной машине -- Postgres+Java. С доп. Оптимизациями:
   - лучший сервер -- Undertow.
   - оптимизация запроса к Постгису.
   - подбор пула доступа к БД.
   Мы получаем 15200-15700 ответов в секунду. Если дополнительно отключить SSL в БД (запросы к локалхосту) -- 16269. Это 1,4 млрд в сутки.
   Некоторые детали: основная машина -- 4 ядра, 8 потоков. В процессе финального теста LoadAverage до 18! 6.4 ядра на Javу и 0,14+ на постгрес. То есть Java тормозит
   Если использовать другой Java-сервер, точно можно выжать 24 000. Если на первом сервере убрать запросы к БД, -- как минимум 27000, но упирается в тестовый клиент.
  
   С моей дев-машины в качестве сервера можно получить до 14 700, но нестабильно (антивирус свирепствует).

 Ваша оценка:

Связаться с программистом сайта.

Новые книги авторов СИ, вышедшие из печати:
Э.Бланк "Пленница чужого мира" О.Копылова "Невеста звездного принца" А.Позин "Меч Тамерлана.Крестьянский сын,дворянская дочь"

Как попасть в этoт список
Сайт - "Художники" .. || .. Доска об'явлений "Книги"