Category Archives: Server Optimization
Load testing tools
https://yandex.ru/dev/tank/ [Tool | Free] https://jmeter.apache.org/ [Tool | Free] http://tsung.erlang-projects.org/ [Tool | Free] https://gatling.io/ [Tool | Free/$] https://k6.io/ [Tool | Free/SaaS] https://locust.io/ [Tool | Free] https://loader.io/ [SaaS | Free/$] https://artillery.io [Tool | Free/$] https://github.com/wg/wrk [Tool | Free]
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 CPU profiling After that you can run something like this in shell:
1 |
go tool pprof -png ~/Downloads/profile |
Or just open it in the browser:
1 |
go tool pprof -http=:1234 ~/Downloads/profile |
If it opens something different then your browser (sublime …
SQL. Как переписать correlation subquery в JOIN to derived table
Допустим есть такая таблица
Подробное объяснение EXPLAIN в PostgreSQL
understanding_explain
Встроенные утилиты linux для слежения за системой
1 2 3 4 5 6 |
ps top vmstat strace perf netstat |
и многие, многие другие на одной схеме:
Настройка свопа и управление кэшами в Ubuntu
http://fx-files.ru/archives/704
1 |
echo 10 > /proc/sys/vm/swappiness // или sysctl -w vm.swappiness=10 |
Для сохранения настройки после перезагрузки внесите в конец файла /etc/sysctl.conf следующую строку:
1 |
vm.swappiness=10 |
Чтобы сразу применить настройку:
1 |
sysctl -p |
Доклад об использовании 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/ Использование:
1 2 3 4 5 6 |
var toobusy = require('toobusy'); app.use(function(req, res, next) { if (toobusy()) res.send(503, "I'm busy right now, sorry."); else next(); }); |
Т.е. при большой занятости показывает всем 503 (в этом примере), от чего проку конечно мало. Но делает очень быстро, а в реальных условиях можно отдавать страницу-заглушку, практически не нагружая сервер. Интересно то, как он меряет — меряет очередь заданий во внутреннем цикле Node.js
Realtime-профилирование проекта от Instagram
Measurements: счетчики и таймеры Дабы следить за всем, что происходить внутри, надо как-то мониторить всю активность. Обычно это два типа активности: какие-то количества (counters, регистраций в секунду, например) и какие-то интервалы времени (timers, сколько по времени занимает лайкнуть винтажное фото, например). Но как быть, когда у тебя не одна машина на балконе, а пара десятков …