
Daniel
12.10.2016
10:23:37
это хорошо если в разрезе сессий не нужно лимитировать

Alexandr
12.10.2016
10:26:21
max_conns
Так это и есть то топорное решение)
Там нормальные разрезы не задать
И очередь не организовать

Mikhail
12.10.2016
10:27:14
это не топорное решение, это стандартная практика)

Google

Mikhail
12.10.2016
10:27:19
оно ставится в очередь
ограничиваются не входящие подключения к nginx, а исходящие к апстрим и входящие ждут свободного слота к апстриму

Alexandr
12.10.2016
10:29:22
И как ограничить количество висящих входящих, чтобы оно, например, не перевалило за 10000?

Mikhail
12.10.2016
10:29:56
отдельный лимит на входящие в nginx
есть ограничения применяемые к входящим, а есть апстримы - у них свои настройки. и на один исходящий адрес можно завести разные апстримы и по разному сконфигурировать, а затем по условию выбирать нужный апстрим. входящие тоже конечно можно по разному сконфигурировать - но вроде без создания альясов, за счет блоков с условиями - это вполне нормально и часто гораздо проще, чем пытаться где-то в бекэнде настраивать

Alexandr
12.10.2016
10:40:57
Ну, у nginx'a нет такого способа, чтобы я мог сказать, например, "если количество одновременных соединений с одного ip (именно одновременных, а не per second) превышает некоторое число, ставь их в очередь, и если очередь превысит некоторую длину, обрубай все, что приходит сверх"

Mikhail
12.10.2016
10:42:48
никто не говорит, что он подходит под все случаи) всегда можно придумать кейс который не уложится в возможности настройки - но главный вопрос - будет ли он взят из реального мира? )))
можно просто ограничить кол-во конкурентов с одного айпи - а вот зачем их ставить в очередь - хм.
можно сделать ограничение по айпи в сотню и отдельно общий лимит - это может быть уже приемлимо (к апстриму они будут все равно в очередь выстраиваться)

Pavel
12.10.2016
10:49:46
я пока простое решение хочу: рубить вообще всем, если в данную секунду пришло больше, чем N запросов. На уровне nginx не получится, потому что нужна другая бизнесовая логика - что-то типа старого кэша с пердупреждением, что это старьё

Viacheslav
12.10.2016
10:51:51
глянь вот, возможно подойдёт https://github.com/vladimir-bukhtoyarov/bucket4j

Alexandr
12.10.2016
10:53:19

Google

Pavel
12.10.2016
10:55:59
спасибо за ссылки? Да, похоже вариант выше для моего случая идиоматичен - там просто фильтр вешается

Mikhail
12.10.2016
11:06:36

Alexandr
12.10.2016
11:08:24
Так это и есть "выстроить в очередь"

Mikhail
12.10.2016
11:08:28
Так это и есть "выстроить в очередь"
только немного будет отличаться тем, что макс-конн для входящих будет вешаться на все запросы от конкретного айпи. и соответственно остальные акшены - тоже будут в этот лимит попадать и сьедать) но все опять таки надо смотреть на реальных не только кейсах, но и действительных потоках данных - много вещей могут быть неактуальны)

Pavel
12.10.2016
11:11:32
да, я неверно выразился, не совсем "рубить"

folex
12.10.2016
17:56:50
Меня регулярно поражают в скале какие-то дебильные недоделки в самом сердце языка. Например нетипизированное ==, или вот щас столкнулся:
trait SomeName {
def someMethod(a: String)
}
class SomeClass extends SomeName {
def someMethod(a: String) = a + 1
}
Что выдаст (new SomeClass).someMethod("abc"), как думаете?

Alexandr
12.10.2016
17:58:56
Разве можно делать абстрактные методы без указания типов?

folex
12.10.2016
17:59:08
правильный ответ
оказывается можно
и они будут : Unit

Aleksei
12.10.2016
17:59:26
ахахахаха =)
скала паззлерс

folex
12.10.2016
18:00:16
больше похоже на недоделку чем какую-то хитрую особенность

Nikolay
12.10.2016
18:03:20
можно флагами компилятора это выровнить?
чтобы был warning хотя бы

Alexey
12.10.2016
18:04:00

folex
12.10.2016
18:05:13
в каком смысле необходимо?
всмысле стоит придерживаться такого правила?
ну то есть компилятор не ругается

Google

folex
12.10.2016
18:05:43
@le_xs

Alexey
12.10.2016
18:07:22
ну то есть компилятор не ругается
С его точки зрения проблем нет. Да, это может быть улучшено. Ровно так же может быть улучшен "code style" пишущего def shit(arg: Type)

folex
12.10.2016
18:07:56
это всё понятно
но вот ты 10й час на работе, и забыл написать : String

Alexey
12.10.2016
18:08:06
Что бы ты сказал увидев такой trait?

folex
12.10.2016
18:08:09
в итоге сиди и отлавливай
я ж не говорю что так надо писать

Alexey
12.10.2016
18:09:03

folex
12.10.2016
18:09:21
Не зря ж типизация и вот это всё. Хочется помощи от , и она есть, и ты к ней привыкаешь
а потом делаешь (образно) что-то вроде new {} == (new SomeClass).someMethod({} + {}), и получаешь букет непонятностей

Alexey
12.10.2016
18:10:43
Я начинал одновременно на javaScript/Scala. Я конечно не против помощи компилятора, но JS отучил))))

folex
12.10.2016
18:11:02
я бы был рад, если бы человечество отучилось от JS

folex
12.10.2016
18:11:10
и сожгло бы его ссаными тряпками
(очень не люблю жс)

Nick
12.10.2016
18:14:12

folex
12.10.2016
18:14:38
в жс всё с ног на голову :)

Alexey
12.10.2016
18:17:50
(очень не люблю жс)
Я ОЧЕНЬ не люблю JS. И еще больше не люблю современные тенденции и библиотеки, которые писали *извините мой французский* какие еб..ый д..лы левой ногой во время пмс
Я не хотел никого обидеть, если вдруг тут есть авторы) Но то что я видел ужасно

Wystan
12.10.2016
18:18:06
что ты видел?

Alexey
12.10.2016
18:18:21

Ivan
12.10.2016
18:18:45

Google

Wystan
12.10.2016
18:19:00
http://dobrochan.com/src/jpg/1610/Cug1rtMWcAE4ND1.jpg_large.jpg

Alexey
12.10.2016
18:19:32

Nick
12.10.2016
18:20:33

Alexey
12.10.2016
18:20:40

folex
12.10.2016
18:20:56

Alexey
12.10.2016
18:21:02

folex
12.10.2016
18:21:16
вот еще за всякий бойлерплейт волноваться

Admin
ERROR: S client not available

Alexey
12.10.2016
18:21:22

folex
12.10.2016
18:21:55
хаскель никак не помогает в вопросе проверки скальным компилятором такого рода проблем, так что не оч понял

Nick
12.10.2016
18:21:58

folex
12.10.2016
18:22:06
а менять язык из-за такой мелочи -- это как-то слишком
в общем
люблю тишину в ТГ после вброса нового стикерпака :)

Mikhail
12.10.2016
18:23:47
val i = 5
val s = i.asInstanceOf[String]
println("s: "+s) // Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String //WTF, compiler????? Where are you, mother fucker?
?

Wystan
12.10.2016
18:24:24
вставляй пальца в розетку @ жалуйся на управдом

Nick
12.10.2016
18:24:26

Alexey
12.10.2016
18:24:40

Google

Mikhail
12.10.2016
18:24:59
к тому, что компайлер много где не помогает)

folex
12.10.2016
18:25:19
-_-

Alexey
12.10.2016
18:25:19
Хде
def someMethod(a: String)

Nick
12.10.2016
18:25:31

Alexey
12.10.2016
18:26:05

folex
12.10.2016
18:26:07
Nick

Alexey
12.10.2016
18:26:34

folex
12.10.2016
18:26:38
@le_xs кому-то может быть

Mikhail
12.10.2016
18:26:49
я и не говорю, что должен) просто факт) хотя я был бы не против, если бы он сказал мне в этом случае, что я мудак и там это будет)

Nick
12.10.2016
18:26:49

Mikhail
12.10.2016
18:28:28
она и с кастом хороша)

Alexey
12.10.2016
18:28:31
А, еще, я не говорил еще? Я только потроллить захожу сюда, когда кодить уже лень, а заняться более нечем.
Причиной этому 95% флуда в этом чате

Nikolay
12.10.2016
18:28:57
в идее часто такие проблемы отмечаются как warning-и, для == там unrelated types предупреждение. можно выкрутить флаги компилятора чтобы warning-и на все ставил, и -Xfatal-warnings чтобы на warning-ах компиляция падала

folex
12.10.2016
18:29:41
@le_xs такой себе троллинг
больше похоже на странные сообщения

Nikolay
12.10.2016
18:29:53
не знаю насчет ситуации с публичными методами без явного указания типов, но часто очень помогает