Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Call of Postgres: Advanced Operations. Part II.

Call of Postgres: Advanced Operations. Part II.

Slides from my tutorial at PgDay 2017 St.Petersburg

Alexey Lesovsky

July 05, 2017
Tweet

More Decks by Alexey Lesovsky

Other Decks in Education

Transcript

  1. Отработка навыков настройки 02 dataegret.com Настройка RAID контроллера. Настройка переменных

    sysctl. Виртуальная память, NUMA, Huge Pages Transparent Huge Pages. Планировщики ввода-вывода. Файловые системы. Энергосбережение.
  2. Настройка RAID контроллера 02 dataegret.com MegaCli (StorCli): • Проверка конфигурации

    контроллера, томов, дисков. • Настройка логических томов. • Журнал событий.
  3. Настройка RAID контроллера 02 dataegret.com Настройка логических томов. # megacli

    ldsetprop wt l0 a0 -- set Writethrough # megacli ldsetprop direct l0 a0 -- set Direct # megacli ldsetprop nora l0 a0 -- set No ReadAhead
  4. Настройка RAID контроллера 02 dataegret.com Журнал событий. # megacli adpeventlog

    getevents severity -f filename a0 • severity: info, warning, critical, fatal
  5. Sysctl переменные 02 dataegret.com Виртуальная память и Out-of-memory: # vi

    /etc/sysctl.conf vm.swappiness = 1 vm.min_free_kbytes = 1000000 vm.overcommit_memory = 0 # sysctl -p
  6. Sysctl переменные 02 dataegret.com Виртуальная память и NUMA: # vi

    /etc/sysctl.conf vm.zone_reclaim_mode = 0 kernel.numa_balancing = 0 # sysctl -p
  7. Sysctl переменные 02 dataegret.com Виртуальная память и Huge Pages: #

    vi /etc/sysctl.conf vm.nr_hugepages = 32000 # 64GB vm.nr_overcommit_hugepages = 1000 # +2GB # echo 3 > /proc/sys/vm/drop_caches # sysctl -p # grep ^Huge /proc/meminfo
  8. NUMA 02 dataegret.com # numastat # numactl --hardware # numactl

    --interleave program # cat /proc/pid/numa_maps
  9. Transparent Huge Pages 02 dataegret.com # uname -a # echo

    never > /sys/kernel/mm/transparent_hugepage/enabled # echo never > /sys/kernel/mm/transparent_hugepage/defrag # vi /etc/rc.local
  10. Планировщики ввода-вывода 02 dataegret.com На лету: # echo noop >

    /sys/block/<device>/queue/scheduler На постоянно, способ №1: # vi /etc/rc.local На постоянно, способ №2: # vi /etc/default/grub GRUB_CMDLINE_LINUX="… elevator=noop" # update-grub
  11. Файловые системы 02 dataegret.com На лету: # mount -o remount,nobarrier

    /db На постоянно: # vi /etc/fstab LABEL=pgdb /db ext4 nobarrier 0 2 # mount -o remount,nobarrier /db
  12. Энергосбережение 02 dataegret.com Какой режим включен? # lscpu |grep MHz

    # cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor Поменять на лету: # for i in $(ls -1 /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor); do echo performance > $i; done На постоянно: # update-rc.d ondemand disable – Ubuntu # cpupower frequency-set -g performance – CentOS
  13. Troubleshooting Linux 02 dataegret.com Постановка задачи: • Определение проблемного ресурса.

    План: • Выявление нагрузки на CPU. • Выявление нагрузки на Storage. • Выявление нагрузки на Network.
  14. Troubleshooting Linux 02 dataegret.com # git clone https://github.com/lesovsky/ConferenceStuff # cd

    ConferenceStuff/2017.pgday/scripts # ./01-generate-test-data.sh
  15. Troubleshooting Linux 02 dataegret.com # scripts/02-generate-cpu-load.sh # top • Load

    average. • CPU Usage: us, sy, ni, id, wa, hi, si, st.
  16. Troubleshooting Linux 02 dataegret.com А какие еще есть тулзы? •

    htop, atop, pidstat, tiptop, ... • /proc/stat интерфейс.
  17. Troubleshooting Linux 02 dataegret.com # scripts/03-generate-io-load.sh # top • CPU

    Usage: wa. # iostat -m -x 1 • IOPSes, throughput, latencies, utilization. # iotop -Poa • Disk read/write, swap, io%. # cat /proc/diskstats
  18. Troubleshooting Linux 02 dataegret.com # scripts/04-generate-network-load.sh # nicstat -m -x

    1 • Throughput, errors, utilization. # netstat -s # ss # cat /proc/net/dev
  19. Troubleshooting Linux 02 dataegret.com Аппаратные проблемы: • Chassis? – ipmitool.

    • CPU? – mcelog. • Memory? – EDAC модули, mcelog. • Storage? – утилиты RAID-контроллеров, smartmontools, mcelog. • Network? – ethtool.
  20. Troubleshooting Linux 02 dataegret.com Аппаратные проблемы: • Chassis? – ipmitool.

    • # ipmitool sel elist • CPU? – mcelog. • Memory? – EDAC модули, mcelog. • Storage? – утилиты RAID-контроллеров, smartmontools, mcelog. • Network? – ethtool.
  21. Troubleshooting Linux 02 dataegret.com Аппаратные проблемы: • Chassis? – ipmitool.

    • CPU? – mcelog. • # mcelog --client • Memory? – EDAC модули, mcelog. • Storage? – утилиты RAID-контроллеров, smartmontools, mcelog. • Network? – ethtool.
  22. Troubleshooting Linux 02 dataegret.com Аппаратные проблемы: • Chassis? – ipmitool.

    • CPU? – mcelog. • Memory? – EDAC модули, mcelog. • # cat /sys/devices/system/edac/mc/mc*/*_count • Storage? – утилиты RAID-контроллеров, smartmontools, mcelog. • Network? – ethtool.
  23. Troubleshooting Linux 02 dataegret.com Аппаратные проблемы: • Chassis? – ipmitool.

    • CPU? – mcelog. • Memory? – EDAC модули, mcelog. • Storage? – утилиты RAID-контроллеров, smartmontools, mcelog. • # megacli, storcli, arcconf, tw_cli, hpacucli, etc... • Network? – ethtool.
  24. Troubleshooting Linux 02 dataegret.com Аппаратные проблемы: • Chassis? – ipmitool.

    • CPU? – mcelog. • Memory? – EDAC модули, mcelog. • Storage? – утилиты RAID-контроллеров, smartmontools, mcelog. • Network? – ethtool. • # ethtool -S eth0 |grep err