Comments 29
Раст даже на одном сервере тянет больше 100к запросов в секунду.
Совсем грустно стало за Go после этой статьи.
Совсем грустно стало за Go после этой статьи.
Слева: сервер бегущий на Go 1.4, справа: сервер бегущий на Go 1.5, разница видна невооруженным взглядом.
Cледующая заметка в блоге этого автора:
Для HTTPS запросов у нас следующая структура:
[nginx] => [varnish] => [golang-app]
а для HTTP
[varnish] => [golang-app]
Сейчас мы используем чистый net/http для веб сервера, без каких-либо фреймворков с маршрутизацией. Тем не менее, приглядываемся к легковесным реализациям, которые генерируют меньше мусора (или вообще без мусора).
Для HTTPS запросов у нас следующая структура:
[nginx] => [varnish] => [golang-app]
а для HTTP
[varnish] => [golang-app]
Сейчас мы используем чистый net/http для веб сервера, без каких-либо фреймворков с маршрутизацией. Тем не менее, приглядываемся к легковесным реализациям, которые генерируют меньше мусора (или вообще без мусора).
Я правильно понял логику:
нам нужна лэтенси ---> берем язык с gc ---> оказывается там фризы ---> о чудо, в версии 1.5 их немного меньше
А если в 1.6 оно снова будет 100мс?
А если бы в 1.5 ничего не изменилось бы?
Я понимаю, это пеар ГОши, но если с другой стороны посмотреть — какая то идиотия, прости господи.
нам нужна лэтенси ---> берем язык с gc ---> оказывается там фризы ---> о чудо, в версии 1.5 их немного меньше
А если в 1.6 оно снова будет 100мс?
А если бы в 1.5 ничего не изменилось бы?
Я понимаю, это пеар ГОши, но если с другой стороны посмотреть — какая то идиотия, прости господи.
Краткое содержание статьи
— Раньше я ездил на велосипеде с подспущенными шинами.
Получалось ездить, но не очень быстро.
Теперь мне накачали шины.
Попробовал объехать вокруг дома — езжу быстрее!!!
Буду теперь ездить быстрее, и все это произошло за пять минут!
— Раньше я ездил на велосипеде с подспущенными шинами.
Получалось ездить, но не очень быстро.
Теперь мне накачали шины.
Попробовал объехать вокруг дома — езжу быстрее!!!
Буду теперь ездить быстрее, и все это произошло за пять минут!
Standard deviation обычно на русский переводится как среднеквадратическое отклонение.
На что люди не идут, лишь бы сразу на эрланге всё нормально не сделать
Нет ли в статье скрытой рекламы таблеток персен?
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 ядер), профайлер показывает что очень заметная часть времени уходит на синхронизацию потоков:
При сборке с 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
Sign up to leave a comment.
Миллиарды запросов в день встречают Go 1.5