среда, 31 мая 2017 г.

Нагрузочное тестирование с использованием ab

Только что узнал, что происходит тестирование с Keep-alive соединением. И чтобы этого избежать можно добавить заголовок для его закрытия.

ab -H 'Connection: close' %url%

Можно будет потом перепроверить всё

понедельник, 19 декабря 2016 г.

How to measure postgresql performance

I have three different servers: VPS with one core cpu, desktop pc and i7 server. I run one sql request and got such execution time:

explain analyze select now();

VPS
 Result  (cost=0.00..0.01 rows=1 width=8) (actual time=0.083..0.084 rows=1 loops=1)
 Planning time: 0.024 - 0.450 ms
 Execution time: 0.021 - 0.295 ms

Desktop
 Result  (cost=0.00..0.01 rows=1 width=8) (actual time=0.003..0.003 rows=1 loops=1)
 Planning time: 0.014 ms
 Execution time: 0.038 ms

Server
"Result  (cost=0.00..0.01 rows=1 width=0) (actual time=0.001..0.001 rows=1 loops=1)"
"Planning time: 0.003 ms"
"Execution time: 0.005 ms"

Seems good for "quick test"

пятница, 15 июля 2016 г.

Mass file renaming by regexp in linux

Good bash script when you want only take part of filename using regexp for renaming

#!/bin/bash

for filename in *.m4a; do
  newFilename=$(echo $filename | \
  sed -r 's#^(.*) - (.*)-(.*).m4a$#\2.m4a#')
  mv "$filename" "$newFilename"
done

Also, you can use rename command
rename s/.mp4$/.m4a/ *.mp4

Memcached info stats

Two good tools to see data of memcached

First of all - telnet

telnet localhost 11211
and type stats

Another good tool is memcached-tool

Just type in without parameters for sample usage

воскресенье, 20 марта 2016 г.

Обновление postgres до 9.5 с 9.4 в Убунту 15.10


Недавно боевые сервера обновили постгрес до 9.5 и даже с помощью pgadmin3 не получается на них зайти, т.к. локально всё еще 9.4

Но для начала сделаем бекап!
sudo -u postgres pg_dumpall > db-9.4.backup

Поэтому проще обновиться локально. Но как? Если в репозитории убунту новая версия базы появится только в 16.04? Подключим сторонние репозитории.

Добавляем репозиторий http://apt.postgresql.org/pub/repos/apt/ В README написано как.

И устанавливаем postgresql-9.5
sudo apt-get install postgresql-9.5

Заходим под пользователем в консоль, чтобы не было проблем с правами.
sudo -iu postgres

Сразу же удалим тот кластер, что создался при установке 9.5
pg_dropcluster 9.5 main --stop

И пересоздадим его на основе текущего - от версии 9.4
pg_upgradecluster 9.4 main

И ждём. Ждём. Готово! Проверьте что всё работает и удаляйте старую версию
pg_dropcluster 9.4 main

И также можно удалить бекап файл
rm db-9.4.backup

вторник, 15 марта 2016 г.

Symfony3 memcached config

When you get that exception after searching memcached config on stackoverflow and other blog article sites:

The reserved indicator "@" cannot start a plain scalar; you need to quote the scalar at line ... (near "- [ setMemcached, [ @memcached ]]").

So you should just quote "@memcached"! It's a new feature for yaml in Symfony3

So current good config I am using now:

parameters:
  memcached.servers:
      - { host: 127.0.0.1, port: 11211 }

services:
    memcached:
        class: Memcached
        calls:
            - [ addServers, [ %memcached.servers% ]]
    doctrine.cache.memcached:
        class: Doctrine\Common\Cache\MemcachedCache
        calls:
            - [ setMemcached, [ "@memcached" ]]

 And for doctrine caches:
doctrine:
  orm:
    metadata_cache_driver:
      type: service
      id: doctrine.cache.memcached
    result_cache_driver:
      type: service
      id: doctrine.cache.memcached
    query_cache_driver:
      type: service
      id: doctrine.cache.memcached

пятница, 19 февраля 2016 г.

Бенчмарк базы без баунсера. Только селекты. Начало

Идём по плану. Создали таблицу на 100к записей. Для pgbench

  1. Тестим в 1/4/8/16/32 селектов.
    • 1 - 1600 (-10) тпс - 1680
    • 4 - 7300 (-100) тпс - 7300
    • 8 - 17250 (-100) тпс - 17300
    • 16 - 26500 (-300) тпс - 26700
    • 32 - 28000 (-500) тпс - 28000
  2. Тестим в 1/4/8/16/32 селектов с новым коннектом
    • 1 - 120 / 940 тпс - 120 / 945
    • 4 - 133 / 11200 тпс - 133 / 11220
    • 8 - 135 / 11200 тпс - 134 / 11300
    • 16 - 133 / 10700 тпс - 133 / 11270
    • 32 - 133 / 10500 тпс - 132 / 10660
  3. Тестим в 1/4/8/16/32 селектов prepared statements
    • 1 - 1714 (-10) тпс - 1680
    • 4 - 7400 (-100) тпс - 7600
    • 8 - 18000 (-100) тпс - 18000
    • 16 - 27500 (-300) тпс - 27500
    • 32 - 28500 (-500) тпс - 27800
  4. Тестим в 1/4/8/16/32 селектов prepared statements с новым коннектом.
    • Не работает 

Выводы

На что можно обратить внимание?
  • prepared statements - ни разу не медленные! Может тут решает то, что всё делается не из скрипта (задержки между вызовами минимальны)
  • Новые коннекты создавать реально очень дорого - лишь 133 селекта в секунду на всех.
  • Теперь подключим баунсер и ожидаем получить что в групп 1 и 3 результаты немного упадут, а в группе 2 - вырастут!