Слава нації
#StandWithUkraine

Роман Теличко

Блог з програмування, оптимізації та адміністрування систем

Тег оптимизация

Создаём и оптимизируем свой tile-сервер для OpenStreetMap на основе Ubuntu 14.04

// 15 Вересня, 2015 | 18011 переглядів | 2 коментарі

Сегодня я расскажу как довольно просто поднять и настроить свой собственный сервер карт (тайловый сервер) на основе Ubuntu Server 14.04 LTS и OpenStreetMap.

Итак начнём. Из Википедии:

OpenStreetMap (дословно «открытая карта улиц»), сокращённо OSM — некоммерческий веб-картографический проект по созданию силами сообщества участников-пользователей Интернета подробной свободной и бесплатной географической карты мира.

Есть довольно подробная официальная статья об установке и настройке tile-сервера, но есть ещё более простой и быстрый способ.
Читати далі…

Делаем запросы в PostgreSQL из nginx кэшируя с помощью Redis

// 23 Травня, 2013 | 10331 переглядів | коментарів (0)

Сегодня я расскажу как можно работать с базой данных PostgreSQL с помощью nginx’a без application’a (например, PHP или любого другого). Т.е. эта технология абсолютно не зависит от языка, на котором сделан сайт/проект/система.
Мы будем использовать мощь PostgreSQL в хранимых процедурах (stored procedures/functions), а кэшировать с помощью быстрого Redis.
Читати далі…

PostgreSQL. Список таблиц с очень частой записью на диск

// 5 Квітня, 2013 | 1037 переглядів | коментарів (0)

Предел возможностей БД часто упирается в дисковые операции. Поэтому стоит оптимизировать эти операции, меняя логику, архитектуру, масштабируя и пр.
Запрос выведет статистику по таблицам в обратном порядке по сумме операций записи, т.е. сверху будут таблицы с наиболее интенсивной записью.

SELECT
    schemaname                                      AS schema,  -- схема
    relname                                         AS table,   -- таблица
    pg_size_pretty( pg_relation_size(relid) )       AS tsize,   -- размер
    n_tup_upd + n_tup_ins + n_tup_del               AS write,   -- операций записи (I/U/D)
    seq_scan + idx_scan                             AS read,    -- всего чтений
    n_tup_ins                                       AS ins,     -- операции INSERT
    n_tup_upd                                       AS upd,     -- операции UPDATE
    n_tup_del                                       AS del      -- операции DELETE
FROM
    pg_stat_user_tables
ORDER BY
    ( n_tup_upd + n_tup_ins + n_tup_del ) DESC

Кстати, так вы можете получить список всех индексов, а так — список неиспользуемых индексов.

Тюнинг Windows 7/8 на SSD (Solid-State Drive)

// 31 Січня, 2013 | 3743 переглядів | коментарів (0)

SSD-диски с каждым годом становяться всё доступнее и всё больше в объёмах. Так и я стал владельцем SSD-диска Kingston SSDNow V+200 60GB 2.5″ SATAIII, “распилив” его пополам, я установил на него любимый Linux Xubuntu 12.10 и новенькую Windows 8 Pro.
О тюнинге последней я расскажу ниже.
А вот о тюнинге Linux Xubuntu на SSD довольно неплохо рассказано вот здесь. Читати далі…

PostgreSQL. Использование индексов

// 16 Вересня, 2012 | 3273 переглядів | коментарів (0)

Запрос отображает использование индексов. Что позволяет увидеть наиболее часто использованные индексы, а также и наиболее редко (у которых будет index_scans_count = 0).

Учитываются только пользовательские индексы и не учитываются уникальные, т.к. они используются как ограничения (как часть логики хранения данных).

В начале отображаются наиболее часто используемые индексы (отсортированы по колонке index_scans_count).

SELECT
    idstat.relname    				        AS table_name,                  -- имя таблицы
    indexrelname    				        AS index_name,                  -- индекс
    idstat.idx_scan    			                AS index_scans_count,           -- число сканирований по этому индексу
    pg_size_pretty(pg_relation_size(indexrelid))        AS index_size,                  -- размер индекса
    tabstat.idx_scan    			        AS table_reads_index_count,     -- индексных чтений по таблице
    tabstat.seq_scan    			        AS table_reads_seq_count,       -- последовательных чтений по таблице
    tabstat.seq_scan + tabstat.idx_scan    	        AS table_reads_count,           -- чтений по таблице
    n_tup_upd + n_tup_ins + n_tup_del    	        AS table_writes_count,          -- операций записи
    pg_size_pretty(pg_relation_size(idstat.relid))      AS table_size                   -- размер таблицы
FROM
    pg_stat_user_indexes    			        AS idstat
JOIN
    pg_indexes
    ON
    indexrelname = indexname
    AND
    idstat.schemaname = pg_indexes.schemaname
JOIN
    pg_stat_user_tables    			        AS tabstat
    ON
    idstat.relid = tabstat.relid
WHERE
    indexdef !~* 'unique'
ORDER BY
    idstat.idx_scan DESC,
    pg_relation_size(indexrelid) DESC

Ubuntu. Ускорение системы

// 21 Лютого, 2012 | 448 переглядів | коментарів (0)

  • Установите preload
    sudo apt-get install preload
  • Сведите к минимуму использование swap’a
    Откройте

    sudo vi /etc/sysctl.conf

    Добавьте/измените параметр

    vm.swappiness = 10

    и перезагрузитесь

  • Измените обработку DNSов
    Откройте

    sudo vi /etc/nsswitch.conf

    Исправьте строчку

    hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4

    на такою

    hosts:    files dns
  • Отключите IPv6
    sudo vi /etc/default/grub

    Измените параметр GRUB_CMDLINE_LINUX_DEFAULT на такой

    GRUB_CMDLINE_LINUX_DEFAULT=”ipv6.disable=1 quiet splash”

    После чего выполните

    sudo update-grub

Firefox. Сжатие БД программы для ускорения работы

// 21 Лютого, 2012 | 1300 переглядів | коментарів (0)

Firefox для своей работы использует БД SQLite, файлы которой нужно периодически оптимизировать (Vacuum). Что может давать в некоторых случаях трёхкратное ускорение запуска Firefox.

Сделать это можно с помощью следующего скрипта:

#!/bin/bash

echo ""
cd ~/.mozilla/firefox/*.default/
pwd
echo ""

for i in *.sqlite;
do	
    prev_size=`ls -lAgh $i | awk '{ print $4 }'`
    echo -n " Vacuum "$i"... ";
    echo "VACUUM;" | sqlite3 $i ;
    echo -e "\tOK ($prev_size -> `ls -lAgh $i | awk '{ print $4 }'`)";
done

echo ""

Для работы необходимы пакет sqlite3

sudo apt-get install sqlite3

Данный скрипт можно запускать периодично. Например при старте компьютера.

Ubuntu. 10 вещей что необходимо сделать после установки Ubuntu 11.10

// 13 Жовтня, 2011 | 470 переглядів | коментарів (0)

Об этом рассказано в этой статье на OMG! Ubuntu:
www.omgubuntu.co.uk/2011/10/10-things-to-do-after-installing-ubuntu-11-10

Перепост: Сборник советов и фактов по оптимизации PHP-скриптов

// 26 Січня, 2011 | 319 переглядів | коментарів (0)

Одним из основных критериев успешности любого интернет-ресурса является скорость его работы и с каждым годом пользователи становятся всё более и более требовательными по этому критерию. Оптимизация работы php-скиптов — это один из методов обеспечения скорости работы системы.
В этой статье я бы хотел представить на суд общественности свой сборник советов и фактов по оптимизации скриптов. Сборник собирался мною достаточно долго, основан на нескольких источниках и личных экспериментах.
Читати далі…