Pull to refresh

Comments 29

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

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

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

image
Cледующая заметка в блоге этого автора:

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

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

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

Sign up to leave a comment.

Articles