Как стать автором
Обновить

Комментарии 29

Раст даже на одном сервере тянет больше 100к запросов в секунду.
Совсем грустно стало за Go после этой статьи.
На одном ядре.
Raspberry Pi…
а если серьезно пруфы, код в студию можно будет посмотреть. у меня даже у nginx который на C не получается на ядре делать 100к
Да это шутки же всё :)
Не, Разбери — это сильно крутая железка.

У меня sim-карта с Java Card Connected на сервлетах 100к запросв в секунду держит. Правда, мы ее деплоим на Nokia 3310

image
Ну да, а у моего брата до сотни за 2 секунды… Вы что и с чем сравниваете, интересно?
Вы опять тут? =)
Во первых, не млрд а млн.
Во вторых, это сообщения между акторами внутри JVM, а не запросы по сети.
Да, ошибочка вышла.
Насчет второго хочу сказать, что вам нужно учиться распознавать сарказм)
А в третьих — пони порвал всех в мире акторов.
Link: http://www.ponylang.org/benchmarks_all.pdf
Слева: сервер бегущий на Go 1.4, справа: сервер бегущий на Go 1.5, разница видна невооруженным взглядом.

image
«Сам дурак»
© Magic Gooddy '98
Cледующая заметка в блоге этого автора:

Для HTTPS запросов у нас следующая структура:
[nginx] => [varnish] => [golang-app]

а для HTTP
[varnish] => [golang-app]

Сейчас мы используем чистый net/http для веб сервера, без каких-либо фреймворков с маршрутизацией. Тем не менее, приглядываемся к легковесным реализациям, которые генерируют меньше мусора (или вообще без мусора).
Здорово, спасибо за наводку.
Я правильно понял логику:
нам нужна лэтенси ---> берем язык с gc ---> оказывается там фризы ---> о чудо, в версии 1.5 их немного меньше
А если в 1.6 оно снова будет 100мс?
А если бы в 1.5 ничего не изменилось бы?
Я понимаю, это пеар ГОши, но если с другой стороны посмотреть — какая то идиотия, прости господи.
Краткое содержание статьи
— Раньше я ездил на велосипеде с подспущенными шинами.
Получалось ездить, но не очень быстро.
Теперь мне накачали шины.
Попробовал объехать вокруг дома — езжу быстрее!!!
Буду теперь ездить быстрее, и все это произошло за пять минут!
Просто автор ещё не отошел от эйфории и не дошел до пункта «сделать выводы».
А выводы могут быть такими «сегодня нас спасли разрабы go, но впредь нужно следить за сборкой мусора».
Спасибо, это верно. Но звучит слишком «научно» — поправил на «стандартное отклонение», что тоже, вроде как, корректно.
Научно не научно, но это общепринятая терминология которой лучше придерживаться.
НЛО прилетело и опубликовало эту надпись здесь
На что люди не идут, лишь бы сразу на эрланге всё нормально не сделать
Нет ли в статье скрытой рекламы таблеток персен?
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Ну я и так, и так встречал. Хотя окей, поправлю.
У меня наоборот с 1.5.1 работа многопоточности ухудшилась — вырасли накладные расходы go на внутреннюю синхронизацию.

Задача: tcp-прокси со сжатием трафика, активно работают 50 горутин — перекачивают и сжимают трафик, суммарный трафик относительно небольшой около 20-30Мбит/сек.
При сборке программы с Go 1.5.1 нагрузка колеблется в районе 50-150% (т.е. от 0.5 до 1.5 ядер), профайлер показывает что очень заметная часть времени уходит на синхронизацию потоков:
Заголовок спойлера
34160ms of 57820ms total (59.08%)
Dropped 144 nodes (cum <= 289.10ms)
Showing top 10 nodes out of 114 (cum >= 1820ms)
      flat  flat%   sum%        cum   cum%
    9020ms 15.60% 15.60%     9020ms 15.60%  compress/flate.(*compressor).findMatch
    7690ms 13.30% 28.90%     7690ms 13.30%  runtime.futex
    5860ms 10.13% 39.03%     6880ms 11.90%  syscall.Syscall
    4090ms  7.07% 46.11%    16310ms 28.21%  compress/flate.(*compressor).deflate
    1520ms  2.63% 48.74%     1520ms  2.63%  runtime.xchg
    1440ms  2.49% 51.23%     9760ms 16.88%  runtime.findrunnable
    1340ms  2.32% 53.55%     1510ms  2.61%  runtime.atomicload
    1180ms  2.04% 55.59%     1180ms  2.04%  runtime._ExternalCode
    1120ms  1.94% 57.52%     1120ms  1.94%  runtime.usleep
     900ms  1.56% 59.08%     1820ms  3.15%  runtime.runqgrab



При сборке с 1.4.3 нагрузка колеблется в районе 20-50%
Заголовок спойлера
48390ms of 60030ms total (80.61%)
Dropped 161 nodes (cum <= 300.15ms)
Showing top 10 nodes out of 64 (cum >= 500ms)
      flat  flat%   sum%        cum   cum%
   25510ms 42.50% 42.50%    25510ms 42.50%  compress/flate.(*compressor).findMatch
   10790ms 17.97% 60.47%    44660ms 74.40%  compress/flate.(*compressor).deflate
    3990ms  6.65% 67.12%     4400ms  7.33%  syscall.Syscall
    1940ms  3.23% 70.35%     7740ms 12.89%  compress/flate.(*huffmanBitWriter).writeBlock
    1630ms  2.72% 73.06%     1630ms  2.72%  runtime.futex
    1460ms  2.43% 75.50%     1970ms  3.28%  compress/flate.(*huffmanBitWriter).writeBits
    1210ms  2.02% 77.51%     2790ms  4.65%  compress/flate.(*huffmanBitWriter).writeCode
     730ms  1.22% 78.73%      890ms  1.48%  compress/flate.(*huffmanEncoder).bitCounts
     630ms  1.05% 79.78%      630ms  1.05%  runtime.writebarrierslice
     500ms  0.83% 80.61%      500ms  0.83%  unrollgcprog1



Аналогично с go 1.3.3
Заголовок спойлера
Total: 2720 samples
     703  25.8%  25.8%      703  25.8% compress/flate.(*compressor).findMatch
     342  12.6%  38.4%     1258  46.2% compress/flate.(*compressor).deflate
     333  12.2%  50.7%      373  13.7% syscall.Syscall
     235   8.6%  59.3%      235   8.6% runtime.futex
      73   2.7%  62.0%       73   2.7% ExternalCode
      67   2.5%  64.4%       67   2.5% runtime.xchg
      45   1.7%  66.1%       45   1.7% runtime.usleep
      43   1.6%  67.7%      213   7.8% compress/flate.(*huffmanBitWriter).writeBlock
      38   1.4%  69.1%       61   2.2% compress/flate.(*huffmanBitWriter).writeBits
      34   1.2%  70.3%       84   3.1% compress/flate.(*huffmanBitWriter).writeCode

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации