Category Archives: Server Optimization
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, сколько по времени занимает лайкнуть винтажное фото, например). Но как быть, когда у тебя не одна машина на балконе, а пара десятков …
Интересный доклад про разработку API
На конференции «.Тостер» попал на доклад Jordi Romero API design and more (слайды). Говорил про создание API, про кеширование, про масштабирование, клиентскую оптимизацию. Понемножку, сжато. Понравилось. Странно только, что у них три уровня хранения данных: mySQL master-slave Redis для сложного кеша, чтобы не нагружать mySQL memcache для простого кеша
Использование VIEW в mySQL 5.0. Проблемы с производительностью.
Для тех, кто не знает, что это такое — ссылка Вкратце: созздаёт, фактически, «временную таблицу» (более правильно сказать — виртуальную таблицу или результат выборки в виде таблицы), в которой могут храниться данные из других таблиц и результаты применения аггрегирующих функций к ним. При этом если хранятся только данные, то эта таблица обновляется при обновлении входящих …