Category Archives: Server Optimization

How to analyze the performance of your go application in production

You should definitely use chi’s middleware for running pprof and stuff in your admin panel. That’s the repo — https://github.com/go-chi/chi That’s the profiler — https://github.com/go-chi/chi/blob/master/middleware/profiler.go After that you can run something like this in shell:

If you run into problems with graphviz like this Failed to execute dot. Is Graphviz installed? Error: exec: «dot»: …

Read more

SQL. Как переписать correlation subquery в JOIN to derived table

Допустим есть такая таблица

Подробное объяснение EXPLAIN в PostgreSQL

understanding_explain

Встроенные утилиты linux для слежения за системой

и многие, многие другие на одной схеме:

Настройка свопа и управление кэшами в Ubuntu

http://fx-files.ru/archives/704

Для сохранения настройки после перезагрузки внесите в конец файла /etc/sysctl.conf следующую строку:

Чтобы сразу применить настройку:

Доклад об использовании RabbitMQ в Mamba

Асинхронная обработка данных: RabbitMQ, Comet from Андрей Федоровский http://www.slideshare.net/pomme3/ss-20026832

Доклад про отладку node на production

Вот слайды — http://dtrace.org/blogs/dap/2012/05/31/debugging-node-js-in-production-fluent-slides/. В докладе рассказывается, как отлаживать боевой сервер без его остановки и как работать с дампами зависшего сервера. Все сводится к использованию двух инструментов: Dtrace (http://dtrace.org/blogs/dap/2012/04/25/profiling-node-js/, http://dtrace.org/blogs/dap/2012/01/13/playing-with-nodev8-postmortem-debugging/) и mdb_v8 (https://github.com/joyent/illumos-joyent/blob/master/usr/src/cmd/mdb/common/modules/v8/mdb_v8.c, https://github.com/joyent/node/blob/master/src/v8ustack.d)

Библиотека для Node.js для нереально больших нагрузок

https://hacks.mozilla.org/2013/01/building-a-node-js-server-that-wont-melt-a-node-js-holiday-season-part-5/ Использование:

Т.е. при большой занятости показывает всем 503 (в этом примере), от чего проку конечно мало. Но делает очень быстро, а в реальных условиях можно отдавать страницу-заглушку, практически не нагружая сервер. Интересно то, как он меряет — меряет очередь заданий во внутреннем цикле Node.js

Realtime-профилирование проекта от Instagram

Measurements: счетчики и таймеры Дабы следить за всем, что происходить внутри, надо как-то мониторить всю активность. Обычно это два типа активности: какие-то количества (counters, регистраций в секунду, например) и какие-то интервалы времени (timers, сколько по времени занимает лайкнуть винтажное фото, например). Но как быть, когда у тебя не одна машина на балконе, а пара десятков …

Read more

Интересный доклад про разработку API

На конференции «.Тостер» попал на доклад Jordi Romero API design and more (слайды). Говорил про создание API, про кеширование, про масштабирование, клиентскую оптимизацию. Понемножку, сжато. Понравилось. Странно только, что у них три уровня хранения данных: mySQL master-slave Redis для сложного кеша, чтобы не нагружать mySQL memcache для простого кеша