@proRuby

Страница 1260 из 1594
ShadoWalkeR
20.06.2018
11:24:33
Если идти дальше по конкретике - как у вас хранится эта почта. Сервис использует какую то БД? Если да - как организовано взаимодействие? Какую нагрузку на сервер он создает? на систему? Как часто отправляется почта - при появлении письма или по расписанию? И тд

Felix
20.06.2018
11:30:09
Если идти дальше по конкретике - как у вас хранится эта почта. Сервис использует какую то БД? Если да - как организовано взаимодействие? Какую нагрузку на сервер он создает? на систему? Как часто отправляется почта - при появлении письма или по расписанию? И тд
Сервис отправляет письмо клиенту, при изменении каких-либо полей у клиента по заранее определенным условиям. Использует основную базу приложения. Пока о нагрузке ничего не могу сказать, т.к. используется он на 0.01% клиентов, от общего числа. Но при переводе в боевой режим хочется иметь возможность быстрого масштабирования

ShadoWalkeR
20.06.2018
11:33:01
Как и откуда он данные по изменениям забирает. Тоже самое по письмам, или генерирует? Маркирует ли он как то что задание обработано?

Google
Alex
20.06.2018
11:33:58
особенно если воркеры спавнят подзадачи

ShadoWalkeR
20.06.2018
11:33:59
И как часто происходит отправка?

Верней так - как часто на текущей нагрузке приходится отправлять письма?

И как часто остальные клиенты генерируют события на отправку? Это кстати можно измерить сделав аналогичное приложение но без отправки почты клиентам.

Felix
20.06.2018
11:50:40
Как и откуда он данные по изменениям забирает. Тоже самое по письмам, или генерирует? Маркирует ли он как то что задание обработано?
Колбэк в модели, который запускает воркер. Воркер спавнит другие воркеры, планируя на определенное время.

Alex
20.06.2018
11:51:57
колбэки в моделях

???

вечно с ними проблемы какие то

Felix
20.06.2018
11:54:44
И как часто происходит отправка?
Зависит от условий. В день 100-150 писем будут уходить точно. И нагрузка может быть сильно неравномерной

ShadoWalkeR
20.06.2018
11:55:08
?

Alex
20.06.2018
11:55:12
что то вспомнил как проект встал когда очередь забилась

ShadoWalkeR
20.06.2018
11:55:15
100-150 писем

Google
Felix
20.06.2018
11:55:26
100-150 писем
может и 1500-3000 писем

ShadoWalkeR
20.06.2018
11:56:25
может и 1500-3000 писем
Сначала измерения сделайте. Чтобы знать будет тут проблема с производительностью или нет

Alex
20.06.2018
11:56:40
очереди замечательно масштабируются

а вот база - не очень.

❤️❤️

причем у большинства этих проблем никогда не будет.

Felix
20.06.2018
11:57:38
очереди замечательно масштабируются
отлично. а в чем предпочтительнее, чтобы крутился сервис?

Alex
20.06.2018
11:57:48
приложение в вебсервере крутится не?

Felix
20.06.2018
11:58:24
Alex
20.06.2018
11:58:48
в чем предпочтительнее чтобы работал автомобиль? слишком размыто

какой сервер, где крутится, какие нагрузки

ShadoWalkeR
20.06.2018
11:59:57
У нас когда авария была крупная, нагрузка выросла в 5 раз и 3 сервера просто заткнулись по процессору и памяти изза звонков. Пришлось срочно с тестового стенда брать сервера и в строй вводить из - вот это проблема с производительностью. А у вас детский сад

Alex
20.06.2018
12:00:10
пиздец

я бы охуел стейжинг в прод переводить

ShadoWalkeR
20.06.2018
12:01:18
"Я не знаю как оно сейчас грузит, как оно будет грузить после перевода в прод, но скажите мне как решить мою проблему, которой возможно не будет"

Felix
20.06.2018
12:02:19
Неправильно сформулировал вопрос) в общем, если рассматривать на примере сайдкика — стартует код сам сайдкик. А в случае очереди сообщений, что лучше использовать? Rack-ом как-то запускать?

Alex
20.06.2018
12:03:52
какой очереди сообщений?

все засунуть в очередь сайдкик

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

Google
Alex
20.06.2018
12:04:22
(хотя спорно)

а вообще у сайдкика есть вебморда и пул воркеров. Один пул воркеров это физический процесс рубей, а значит хоть там и много воркеров но работать хорошо будут только высоко конкурентные задачи

также как и у ноды например.

Только у руби с асинхронностью плохо поэтому просто плодят побольше потоков.

Впрочем никто не мешает держать несколько пулов sidekiq с разными приоритетами (один почту обрабатывает например, а другой все остальное)

Felix
20.06.2018
12:09:44
Впрочем никто не мешает держать несколько пулов sidekiq с разными приоритетами (один почту обрабатывает например, а другой все остальное)
Так и есть щас. Думал над тем, чтобы часть воркеров сделать незавершающимися, а данные забирать из очереди.

Alex
20.06.2018
12:10:00
так и делаем
у меня так не делали пока петух жареный не клюнул

Roman
20.06.2018
12:10:11
так обычно и бывает

Alex
20.06.2018
12:10:13
правда я там уже не работаю, но не по этому.

так обычно и бывает
деплой в докере да?

Roman
20.06.2018
12:10:47
не

Alex
20.06.2018
12:11:17
не
а как при автодеплое запускаете пулы?

я чет все позабыл уже ((

Alex
20.06.2018
12:12:06
Я тут ищу адекватную схему запуска пумы после перезагрузки, пока что смотрю в сторону systemd --user

ну и других процессов тоже, того же sidekiq или бота.

Alex
20.06.2018
12:13:26
Я в systemd делал

Alex
20.06.2018
12:13:59
а апдейтишь конфиг юнита ручками?

Google
Alex
20.06.2018
12:14:24
и в sudo исключение добавил для автоперезапуска?

Alex
20.06.2018
12:15:26
Добавил пользователю возможность перезапуска systemd puma без sudo, конфиг редко и руками получается

Alex
20.06.2018
12:15:44
т.е юзаешь systemd --user?

ShadoWalkeR
20.06.2018
12:31:12
Я тут ищу адекватную схему запуска пумы после перезагрузки, пока что смотрю в сторону systemd --user
Хех. Можно юнит systemd написать, который будет запускать пуму. Там даже параметры есть от какого пользователя запускать сервис

ShadoWalkeR
20.06.2018
12:32:42
[Unit] Description= After=network.target [Service] Type=forking GuessMainPID=yes User= Group= # If not use forking and GuessMainPID options # PIDFile=/run/%p.pid ExecStart= ExecStopPost=/bin/rm -f $MAINPID Restart=on-failure [Install] WantedBy=multi-user.target

Так же проще

Это шаблон для засовывания в systemd чего либо. Его, правда, придется допиливать под приложение, поскольку все предусмотреть нельзя

Но представление дает.

Просто потом можно вот так делать: systemctl status callManagerREST ● callManagerREST.service - Queue module that work with redis, mysql and kamailio for forming call to agents via REST API Loaded: loaded (/etc/systemd/system/callManagerREST.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2018-06-20 17:28:27 +05; 7min ago Process: 11765 ExecStop=/bin/bash -c /usr/bin/env ruby $VOIP_BIN/callManagerREST.rb stop (code=exited, status=0/SUCCESS) Process: 11829 ExecStart=/bin/bash -c /usr/bin/env ruby $VOIP_BIN/callManagerREST.rb start (code=exited, status=0/SUCCESS) Process: 11825 ExecStartPre=/usr/bin/env ruby -v (code=exited, status=0/SUCCESS) Tasks: 4 (limit: 4915) Memory: 36.1M (limit: 512.0M) CPU: 646ms CGroup: /system.slice/callManagerREST.service ├─11879 callManagerREST └─11880 callManagerREST_monitor

Alex
20.06.2018
12:38:09
@ShadoWalkeR31 systemd --user это насколько я понимаю теже юниты только от лица конкретного юзера

у меня просто деплой в хомяк и запуск тоже от того же юзера

ShadoWalkeR
20.06.2018
12:39:31
Может я не совсем понимаю - после деплоя вызывается команда systemd —user run приложение?

А все - посмотрел вывод команды

Если у тебя приложение крашнется что произойдет? Я просто с самой командой systemd не работал - сразу service файлы стал использовать

Alex
20.06.2018
12:42:06
оно поидее рестартиться должно

причем тут команда )) такой же юнит поидее

ShadoWalkeR
20.06.2018
12:43:31
Если я правильно понял он запустит чтото типа screen - надо будет справку почитать)

Alex
20.06.2018
12:43:52
он запускает user процесс systemd который хэндлит юниты

Google
Alex
20.06.2018
12:43:54
если ничего не путаю

ShadoWalkeR
20.06.2018
12:45:37
Скорее всего с какими то дефолтными вещами. Можешь попробовать systemct list-units сделать и поискать там свой сервис Потом systemctl cat %имя сервиса%

Ну и systemctl show/status %имя сервиса%

Alex
20.06.2018
12:46:05
в плане дефолтными вещами? ))

ShadoWalkeR
20.06.2018
12:46:28
Там набор опций существенно больше в настройке сервиса)

Alex
20.06.2018
12:46:34
естественно

ShadoWalkeR
20.06.2018
12:47:04
Просто в примере выше - я сразу лимит памяти назначаю для сервиса

Еще он у меня в случае падения/рестарта в заббикс уведомления шлет

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

Alex
20.06.2018
12:49:25
у меня тоже rvm

ShadoWalkeR
20.06.2018
12:49:50
У меня он не по дефолту) Тут некая предвзятость в организации к нему ?

Alex
20.06.2018
12:49:59
по дефолту в смысле?

ShadoWalkeR
20.06.2018
12:50:07
Пришлось извернуться)

У меня системный руби по дефолту

Alex
20.06.2018
12:50:22
а в хомяке rvm

ибо нефиг rvm делать ничего за пределами хомяка

rvm на уровне системы - садомазо

ShadoWalkeR
20.06.2018
12:50:59
А у меня в системе - один на всех. Просто подцепить его просто так нельзя)

Да все нормально, если умеючи))))

Страница 1260 из 1594