Комментарии 29
Раст даже на одном сервере тянет больше 100к запросов в секунду.
Совсем грустно стало за Go после этой статьи.
Совсем грустно стало за Go после этой статьи.
-6
На одном ядре.
+8
Ну да, а у моего брата до сотни за 2 секунды… Вы что и с чем сравниваете, интересно?
+10
Вы опять тут? =)
+5
А akka хвалится своими 50 млрд сообщений в секунду, а ведь это JVM.
-3
Слева: сервер бегущий на Go 1.4, справа: сервер бегущий на Go 1.5, разница видна невооруженным взглядом.
+15
Cледующая заметка в блоге этого автора:
Для HTTPS запросов у нас следующая структура:
[nginx] => [varnish] => [golang-app]
а для HTTP
[varnish] => [golang-app]
Сейчас мы используем чистый net/http для веб сервера, без каких-либо фреймворков с маршрутизацией. Тем не менее, приглядываемся к легковесным реализациям, которые генерируют меньше мусора (или вообще без мусора).
Для HTTPS запросов у нас следующая структура:
[nginx] => [varnish] => [golang-app]
а для HTTP
[varnish] => [golang-app]
Сейчас мы используем чистый net/http для веб сервера, без каких-либо фреймворков с маршрутизацией. Тем не менее, приглядываемся к легковесным реализациям, которые генерируют меньше мусора (или вообще без мусора).
+2
Я правильно понял логику:
нам нужна лэтенси ---> берем язык с gc ---> оказывается там фризы ---> о чудо, в версии 1.5 их немного меньше
А если в 1.6 оно снова будет 100мс?
А если бы в 1.5 ничего не изменилось бы?
Я понимаю, это пеар ГОши, но если с другой стороны посмотреть — какая то идиотия, прости господи.
нам нужна лэтенси ---> берем язык с gc ---> оказывается там фризы ---> о чудо, в версии 1.5 их немного меньше
А если в 1.6 оно снова будет 100мс?
А если бы в 1.5 ничего не изменилось бы?
Я понимаю, это пеар ГОши, но если с другой стороны посмотреть — какая то идиотия, прости господи.
0
Краткое содержание статьи
— Раньше я ездил на велосипеде с подспущенными шинами.
Получалось ездить, но не очень быстро.
Теперь мне накачали шины.
Попробовал объехать вокруг дома — езжу быстрее!!!
Буду теперь ездить быстрее, и все это произошло за пять минут!
— Раньше я ездил на велосипеде с подспущенными шинами.
Получалось ездить, но не очень быстро.
Теперь мне накачали шины.
Попробовал объехать вокруг дома — езжу быстрее!!!
Буду теперь ездить быстрее, и все это произошло за пять минут!
+6
Standard deviation обычно на русский переводится как среднеквадратическое отклонение.
+2
На что люди не идут, лишь бы сразу на эрланге всё нормально не сделать
-4
Нет ли в статье скрытой рекламы таблеток персен?
-2
НЛО прилетело и опубликовало эту надпись здесь
У меня наоборот с 1.5.1 работа многопоточности ухудшилась — вырасли накладные расходы go на внутреннюю синхронизацию.
Задача: tcp-прокси со сжатием трафика, активно работают 50 горутин — перекачивают и сжимают трафик, суммарный трафик относительно небольшой около 20-30Мбит/сек.
При сборке программы с Go 1.5.1 нагрузка колеблется в районе 50-150% (т.е. от 0.5 до 1.5 ядер), профайлер показывает что очень заметная часть времени уходит на синхронизацию потоков:
При сборке с 1.4.3 нагрузка колеблется в районе 20-50%
Аналогично с go 1.3.3
Задача: 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
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Миллиарды запросов в день встречают Go 1.5