
Dmitry
15.06.2018
12:10:55
Вдруг это просто GC начинал свое долгое дело

Pavel
15.06.2018
12:16:45
Если бы сработал GC то я думаю что в очереди сразу накопилось бы несколько десятков запросов от ab и все они обрабатывались бы долго.

Google

Ievgenii
15.06.2018
12:20:56
Дело в том, что зависает какой-то запрос(ы), а новые обрабатываются!
Принемает и быстро отвечает
А для какого-то зависшего он просто ничего не делает
Это точно не GC
Там практически нет его работы
Я даже вырубал его

Pavel
15.06.2018
12:22:48
Это может быть еще косяк ab кстати

Ievgenii
15.06.2018
12:22:51
Процесс спустя 30 сек раздувался до 200 метров

Pavel
15.06.2018
12:22:57
Попробуй померять с помощью wrk

Ievgenii
15.06.2018
12:23:02
НО!

Google

Ievgenii
15.06.2018
12:23:18
Я делаю тот же самый тест на nginx и у него все работает!
не виснет
Еще прикол такой, что иногда виснит так, что данные в сокете есть, а он его дергает CB. Я просто в таймере вычитывал еще из зависших сокетов и там данные были

Dmitry
15.06.2018
12:24:51


Ievgenii
15.06.2018
12:25:26
Вот яркий пример:
ab -c 500 -n 100000 127.0.0.1:8080/
This is ApacheBench, Version 2.3 <$Revision: 1706008 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 127.0.0.1 (be patient)
Completed 10000 requests
Completed 20000 requests
Completed 30000 requests
Completed 40000 requests
Completed 50000 requests
Completed 60000 requests
Completed 70000 requests
Completed 80000 requests
Completed 90000 requests
^C
Server Software:
Server Hostname: 127.0.0.1
Server Port: 8080
Document Path: /
Document Length: 10 bytes
Concurrency Level: 500
Time taken for tests: 17.109 seconds
Complete requests: 99852
Failed requests: 0
Total transferred: 8487420 bytes
HTML transferred: 998520 bytes
Requests per second: 5836.11 [#/sec] (mean)
Time per request: 85.674 [ms] (mean)
Time per request: 0.171 [ms] (mean, across all concurrent requests)
Transfer rate: 484.44 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 12 81.8 2 3006
Processing: 0 12 171.3 3 12834
Waiting: 0 10 171.3 2 12834
Total: 0 24 195.4 5 12839
Percentage of the requests served within a certain time (ms)
50% 5
66% 20
75% 25
80% 25
90% 27
95% 28
98% 32
99% 42
100% 12839 (longest request)
Тест длился 17.109 seconds
100000 - 99852 = 148 реквестов щависло
Самый первый завис спустя 17 - 13 ~ 4 секунды
Но после этого он обработал еще десятки тысячь запросов
Это странно


Pavel
15.06.2018
12:29:24
Такое ощущение что планировщик какой-то кривой, забывает про некоторые сокеты надолго )

Ievgenii
15.06.2018
12:29:59
ыгы
Что-то типа того

Andrey
15.06.2018
12:31:51
насколько помню сейчас код чтения, там же не факт, что ты вычитал все из сокета, но тем не менее сбрасываешь состояние. т. е. данные остались, но уже ev об этом не скажет, может в этом дело

Ievgenii
15.06.2018
12:32:19
Он даже не вызывает первый раз колбек, для вычитки
+ это простой GET запрос
Из AB
Там всего данных до 1Кб

Google

Andrey
15.06.2018
12:33:27
плюс загодлвки, немного, но все же
жаль, что у меня не воспроизводится

Ievgenii
15.06.2018
12:34:44
А ты сделай ab -c 500 -n 100000 127.0.0.1:8080/
И, думаю, у тебя тоже будет такая ситуация
Если я из него вычитал пару байт, это не значит, что то, что в нем осталось - пропадет
cb будет снова вызываться до тех пор, пока я все там не вычитаю

Andrey
15.06.2018
12:39:32
там делантся ev_stop/start, вроде эт значит, что сбразывается. ev не вызывает колбэк, пока данные есть, а вызывает, когда была активность.

Ievgenii
15.06.2018
12:42:55
Сейчас проверю
Работает
Вычитывал по 2 байта и после каждой вычитки перерегистрировал в loop

Ievgenii
15.06.2018
12:44:09
Работает
if (revent & EV_READ){
received = recv(io.fd, buffer, 2, 0);
writeln("read: ", received);
if (received < 1){
return closeFd(loop, io);
}
myIo.bufferIn ~= buffer[0..received];
reInit(loop, io, EV_READ);
}
И вычитал все данные
Пофиксил проблему О.о
Просто убрал O_NONBLOCK
Тоесть сокеты блокирующие и все стало работать!
Без зависаний
Ну пока...

Google

Ievgenii
15.06.2018
14:43:00
А там посмотрим)
Не, все равно виснит

Denis
15.06.2018
18:59:26

Dmitry
17.06.2018
08:15:48
Я что-то туплю, а теперь как этот код должен выглядеть? https://dlang.org/changelog/2.081.0.html#implicit_catch_error

Stepanos
17.06.2018
08:17:13
круть) как в Java уже

Dmitry
17.06.2018
08:21:57
покажи плиз как теперь должно быть

Stepanos
17.06.2018
08:23:05
https://tour.dlang.org/tour/ru/basics/exceptions
для кого тур переводили? :)

Admin
ERROR: S client not available

Stepanos
17.06.2018
08:23:20
и держим в актуальном состоянии +-

Dmitry
17.06.2018
08:24:50
А все дошло

Ievgenii
17.06.2018
09:16:24
Ну, без указания какого именно исключения/ошибки ты ждёшь, Кетч писать нельзя
Логично

Denis
17.06.2018
12:11:49

Dmitry
17.06.2018
12:13:08
Там для плюсов много фишек добавили как понимаю. Видать идея совместимости не покидает
Лучше бы GC допилили. В сто раз полезнее было бы

Denis
17.06.2018
12:28:55

Ievgenii
17.06.2018
12:32:31

qwerty
17.06.2018
12:40:27
последнее время стали большие релизы получаться. Раньше я даже не замечал их
вообще кстати по-моему можно фичи поднимаются в списке, если на них задонатить

Google

qwerty
17.06.2018
12:45:34
можем скинуться чатом, если договоримся какую фичу все хотят
точней не скинуться, а а договориться и задонатить вместе то, что считаем нужным

elias
17.06.2018
13:59:27
привет. тут еще вопрос - а кто будет поглощать доначенные деньги.
сытые западные программисты или неизбалованные отечественные

qwerty
17.06.2018
14:01:00
я не знаю внутренней кухни сообщества

Dmitry
17.06.2018
14:07:53
Сытые западные что-то донатят сами очень мало. В моем понимании им там 2-3 тыс долларов должно быть не сложно с рыла скинуть, а по факту там донаты 50-70 баксов в среднем получаются

Maxim
17.06.2018
14:14:18
ну, как бы, и для сытых западных программистов 2-3 тысячи долларов — это 2-3 тысячи долларов)

qwerty
17.06.2018
14:16:11
под западом подразумеваются США или Европа? Для вторых 2-3к - 75% - 90% от мединной нетто з.п. Для первых Почти 50% от нетто з.п. На "семечки" мало походит. Про з.п. США могу ошибаться, но на европейские позиции собеседуюсь последние пару месяцев
хотя я опять-таки смотрю в webdev, не могу говорить все отрасли

Dmitry
17.06.2018
14:41:16
Нетто это типа на руки?
Мне тут вакансия упала на почту. Бэкэнд. Требуется знание Фотошоп, JQuery и PHP. Боюсь даже предположить чем они там занимаются.

qwerty
17.06.2018
14:56:33

Dark
17.06.2018
15:07:35
Тупой вопрос №10.
Что, все еще нет конвертеров C в D?

Ievgenii
17.06.2018
15:19:26
Только ОЧЕНЬ фул)))

Dmitry
17.06.2018
15:21:36
Да под фулстеком какой трэш только не встречается.

Dark
17.06.2018
15:23:07

Oleg
17.06.2018
15:25:40
dstep, кажется называется
https://code.dlang.org/packages/dstep