Про OLTP

Dec 05, 2013 16:10

А на чём стоит начинать писать OLTP-систему с целевой производительностью порядка 4k запросов в секунду с перспективами масштабирования в несколько раз?

Предположим, есть только неможко пхпшников, которых в любом случае переучивать. Вопрос - куда.

Пока что кандидаты: scala, erlang, java, clojure

Leave a comment

alex_butenko December 5 2013, 13:17:05 UTC
а чем пыхпых хуже будет? :) php-fpm вполне себе будет работать.

Reply

inhate December 5 2013, 14:30:36 UTC
Не умеет послать запросы на несколько серверов БД и внешних API параллельно.
Ну умеет connection pool.
PHP-FPM у меня уже есть. Захлебнулся на Debian при ~1300-1500rps на ноду, на центоси работает лучше, но всё равно двух проблем выше не решает.

Reply

levgem December 5 2013, 14:31:47 UTC
какая может быть разница между дебианом и центосью?

Reply

alex_butenko December 5 2013, 14:54:55 UTC
патчики всякие наверняка. Или fs там пошустрее работает.

Reply

bydlorus December 5 2013, 15:46:44 UTC
Eclipse стартует быстрее.

Reply

nivanych December 6 2013, 09:32:41 UTC
По-разному собран пакет, как например...
Ядра разные, это тоже иногда может настолько влиять.

Reply

alex_butenko December 5 2013, 14:53:23 UTC
> Не умеет послать запросы на несколько серверов БД и внешних API параллельно.

это как? Сделай кластер на перконе/оракле и вот тебе несколько серверов БД.
Не понятно про апи. Есть же треды.

> Ну умеет connection pool.

Муsql/Oracle10 умеет же на сервер сайд.

> Захлебнулся на Debian при ~1300-1500rps на ноду

может код говносильно обьектно-ориентированн? :)

Reply

inhate December 5 2013, 15:22:00 UTC
Ну вот смотри, у меня есть следующие источники данных:
1) Репликационная пара основной БД - Percona 5.5
2) Отдельный сервер для сбора статистики - Percona 5.6
3) Мемкэш
4) Удалённые сервера предоставляющие некие API, от нуля до 5 например.

Получив запрос от юзера я хочу:
a) Записать информацию запросе на сервер статистики
b) Получить данные из мемкэша по юзеру
c) Послать несколько запросов в репликационноую пару - часть данных читать и писать на мастере, ещё часть - читать с менее загруженого слейва
d) Отправить запросы в удалённые API.
Значительная часть логики конечно будет последовательно в духе "если ... то", но кое-что можно и параллельно обрабатывать, например писать статистику в БД точно можно параллельно, да и внешние API довольно хорошо должны уходить в бэкграунд.

На PHP могу только последовательно всё это выполнить.

Reply

alex_butenko December 5 2013, 22:16:41 UTC
здрасьте, приехали :)
а http://www.php.net/manual/en/function.pcntl-fork.php ?

Reply

inhate December 6 2013, 08:54:14 UTC
Саша, ты шутишь? Предположим, у меня 5 источников данных (3xMySQL, 1xMemcache, 1xAPI) и 4k запросов - это внезапно 20k форков в секунду, пигнвинчег лопнет.

Reply

inhate December 5 2013, 15:34:10 UTC
А Debian захлебнулся самым странным образом ( ... )

Reply

poligraph December 5 2013, 21:36:07 UTC
зато дебиан полностью gnu :)

вообще конечно интересно, так в чем беда - в ядре дебиана? как-то сомневаюсь что fpm на что-то влияет.

Reply

alex_butenko December 5 2013, 22:20:28 UTC
а там ты epoll включил?
А насчет сентоси таки да, скорее всего какие-то интересные патчи. Я поэтому забил в свое время астериски на дебиане ставить.

Reply

inhate December 6 2013, 08:54:59 UTC
Это правильный кстати вопрос, мастер-процесс в самом деле делает epoll_wait, а вот воркеры - к сожалению простой poll()

Reply

levgem December 6 2013, 06:15:38 UTC
я думаю, что дело всё таки в каких-то настройках.

Эрливидео раздает по 10 гигабит на убунте и таких проблем не видно.

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

Reply

kurilka December 6 2013, 06:29:15 UTC
А можно какие-то аргументы почему не стоит? Сам с центосью мало ковырялся

Reply


Leave a comment

Up