@proelixir

Страница 505 из 1045
shadowjack
04.04.2017
09:20:41
Да, думаю нужен close в дополнение/вместо shutdown

Константин
04.04.2017
09:23:01
так он есть

просто как писали выше - сокет не закрывается еще 60 сек

shadowjack
04.04.2017
09:23:42
На стороне эликсира

Google
Константин
04.04.2017
09:23:43
ровно через 60 сек скрипт продолжает выполнение

сейчас добавлю

shadowjack
04.04.2017
09:24:59
Попробуй без shutdown просто close.

Константин
04.04.2017
09:25:37
оно так было изначально, разницы нет

shadowjack
04.04.2017
09:26:03
Ты сейчас попробовал?

Александр
04.04.2017
09:26:42
я думаю php не рвёт

netstat ом посмотри TIME_WAIT

и какой пид их держит

Константин
04.04.2017
09:30:46
да откуда прозрачность, блин берется((((

5 сек

Александр
04.04.2017
09:31:49
http://php.net/manual/ru/function.socket-close.php

там в доке снизу показаны опции

попробуй с ними

Google
Константин
04.04.2017
09:35:55
да, дело пишут, сейчас протестирую

shadowjack
04.04.2017
09:38:57
В общем сдаётся мне time_wait будет или на сервере или на клиенте. Без опций.

Константин
04.04.2017
09:41:43
значит так.. получается, что можно увеличить количество одновременно открытых tcp соединений до 60к штук. Т.к. время ожидания закрытия соединений 60 сек - у нас пропускная спосоюность 1к в сек

уже не плохо)

теперь можно игрануть с временем ожидания

тем самым увеличить до 2к и более в сек

Max
04.04.2017
09:42:43
число портов тоже можно увеличить

хотя я наверное гоню

в пакетах всё равно 2 байта под них же

shadowjack
04.04.2017
09:44:42
cat /proc/sys/fs/file-max

Хотя исходящих портов да, ограниченное количество

Есть идея, до работы дойду - попробую. Выложи пожалуйста исходники.

Александр
04.04.2017
10:13:00
ещё у бенчмарке включи ELIXIR_ERL_OPTIONS="+K true"

у меня ab на ноуте с ковбоем выдаёт 45000 rps

Константин
04.04.2017
10:27:27
Я ПОБЕДИЛ!!!!!!!!

$linger = array ('l_linger' => 0, 'l_onoff' => 1); socket_set_option($sock, SOL_SOCKET, SO_LINGER, $linger);

Бля...



Вот между стрелками код

таким образом он полностью закрывает соединение

Google
Константин
04.04.2017
10:29:15
скотина этот пыхыпэ, сволочь, гад, недруг..

Александр
04.04.2017
10:29:30
тестил бы ab или wrk

там эти проблемы давно решили

shadowjack
04.04.2017
10:29:41
Да это не только в PHP. Так TCP работает.

Александр
04.04.2017
10:29:41
или tsung ещё есть

http://www.phoenixframework.org/blog/the-road-to-2-million-websocket-connections

вот тут с тюнингом

Константин
04.04.2017
10:30:23
да я читал эту штуку, уже некоторые вещи заюзал

shadowjack
04.04.2017
10:30:47
Сколько в результате получилось?

Константин
04.04.2017
10:37:36
100к за 7 сек

1 миллион за 30 сек без отправки назад

Александр
04.04.2017
10:38:28
а проц какой?

Александр
04.04.2017
10:38:55
для ranch сколько слушающих процессов?

что-то мало ((

Константин
04.04.2017
10:39:23
def start_link(port) do {:ok, _} = :ranch.start_listener( :teaser_view, 10000, :ranch_tcp, [port: port, max_connections: :infinity, backlog: 100000], TeaserView.Handler, [] ) end

i7-6700

https://ark.intel.com/ru/products/88196/Intel-Core-i7-6700-Processor-8M-Cache-up-to-4_00-GHz

вот этот

Александр
04.04.2017
10:42:46
10тыс много, у меня с 100 - 45К rps выдаёт и проц уменя Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz

а кинь серверную часть

Google
Александр
04.04.2017
10:42:58
я у себя погоняю

shadowjack
04.04.2017
10:45:30
что-то мало ((
так клиент в один поток. Я думаю там узкое место.

Александр
04.04.2017
10:45:44
ааа

ну да, согласен

shadowjack
04.04.2017
10:47:12
Получается latency 100 uS. По-моему очень даже неплохо.

Константин
04.04.2017
10:48:26
Да, клиент создает, пишет и закрывает соединение. Теперь надо многопоточно проверить)

штук так в 500

Admin
ERROR: S client not available

shadowjack
04.04.2017
10:50:07
Используй wrk если хочешь сервер проверить.

Константин
04.04.2017
10:50:50
ок, попробую

погоди, но он http тестирует

а мне то tcp надо

Александр
04.04.2017
10:54:16
тебе вообще amqp надо тестировать

насколько я помню

tsung умеет

Константин
04.04.2017
10:54:46
не, это уже другая тема

я тогда писал на udp, но потери пакетов были приличные

вот решил на tcp перейти

хочу сделать сборщик данных

Есть большой поток обращений в php скрипты, там пока все справляется хорошо. Но надо писать лог в базу из них. Чтобы не нагружать систему кучей запросов - лучше сделать сбор в одном месте и раз в 10 сек записывать все данные. Это можно сделать и через редис, но есть косяк в предварительной обработке этих данных. Эликсир декодирует json строки и делает все необходимые изменения с офигительной скоростью через flow и может в отдельном процессе вставлять данные в базу.

Google
Александр
04.04.2017
11:03:16
может готовый https://www.elastic.co/products/logstash взять?

ну и весь стек притянуть

можно и анлизировать будет быстро

Константин
04.04.2017
11:03:43
нужна запись в clickhouse

Для аналитики замечательно подходит

и у него прикол, что данные лучше вставлять пачками по >1000 элементов

следовательно такое решение наиболее правильное. Мы собираем кучу данных, через flow подготавливаем и обрабатываем. Потом всей толпой засовываем в clickhouse

Vladimir
04.04.2017
11:06:42
Для аналитики замечательно подходит
С Алексеем Миловидовым общался на днях. Он говорит, что под Erlang нет коннектора.

Александр
04.04.2017
11:06:59
а где можно посмотреть какие графики выдаёт?

Vladimir
04.04.2017
11:07:02
Самим писать несложно, но этож писать надо

Александр
04.04.2017
11:07:07
или там отдельно визуализация?

Константин
04.04.2017
11:07:07
http интерфейс ведь есть

Vladimir
04.04.2017
11:07:23
то http, а то api

Константин
04.04.2017
11:07:27
визуализацию самому писать

Vladimir
04.04.2017
11:07:33
для CouchDB тоже всё по http, однако апи гораздо удобнее

CouchDB API для Clojure кстати весьма крутое.

Александр
04.04.2017
11:08:22
у вас как у яндекса/гугла миллиарды сообщений в месяц проходят?

Страница 505 из 1045