基于linux(CentOS7)数据库性能优化(Postgresql)
基于CentOS7数据库性能优化(Postgresql)
1、 磁盘
a) Barriers IO
i. 通过查看linux是否加载libata,确定是否开启(一般操作系统都是默认开启)
[root@localhost ~]# dmesg |grep libata
[ 2.063756] libata version 3.00 loaded.
b) 禁止atime,读文件时不再更新atime,修改/etc/fstab 对应的磁盘,可以用cat命令检查是否生效。(传说作用很大,待证实)
i. 配置如下
[root@localhost ~]# cat /etc/fstab
/dev/mapper/centos-root / xfs noatime,nodiratime 0 0
ii. 检查是否生效
[root@localhost postgres]# date
2019年 06月 27日 星期四 09:05:19 CST
[root@localhost postgres]# cat logfile >/dev/null
[root@localhost postgres]# stat logfile
文件:"logfile"
大小:1562 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:51924132 硬链接:1
权限:(0600/-rw-------) Uid:( 1001/postgres) Gid:( 1001/postgres)
环境:unconfined_u:object_r:user_home_t:s0
最近访问:2019-06-26 17:07:33.536434918 +0800
最近更改:2019-06-20 13:31:55.101630817 +0800
最近改动:2019-06-20 13:31:55.101630817 +0800
c) 调整磁盘预读大小
i. 查看预读大小
[root@localhost postgres]# blockdev --getra /dev/sda
4096(每个扇区512bytes, 4096*512=2M)
ii. 调整预读大小
[root@localhost postgres]# blockdev --setra 8192/dev/sda
d) IO调度器(影响不大)
Linux 2.6 内核包含4个IO调度器,分别是Noop IO scheduler、Anticipatory IO scheduler、Deadline IO scheduler 与 CFQ IO scheduler。
Noop IO scheduler 是一个简化的调度程序,它只作基本的合并与排序。
Anticipatory IO scheduler是目前内核中默认的IO调度器,它拥有非常好的性能,在Linux2.5内核中它就相当引人注意,在与Linux2.4内核(无该调度器)进行对比测试中,Linux2.4内核中多项以分钟为单位完成的任务,它则是以秒为单位来完成的,正因为如此它成为了目前Linux 2.6内核中的默认的IO调度器。Anticipatory IO scheduler的缺点是比较庞大与复杂,在一些特殊的情况下,特别是在数据吞吐量非常大的数据库系统中它会变得比较缓慢。
Deadline IO scheduler是针对Anticipatory IO scheduler的缺点进行改善而来的,表现出的性能几乎与Anticipatory IO scheduler一样好,但是比Anticipatory 要小巧。
CFQ IO schedule为系统内的所有任务分配相同的带宽,提供一个公平的工作环境,它比较适合桌面环境。事实上在测试中它也有不错的表现,mplayer、xmms等多媒体播放器与它配合的相当好,回放平滑,几乎没有因访问磁盘而出现的跳帧现象。
数据库常用:Deadline IO scheduler
查看修改命令:
$ cat /sys/block/sda1/queue/scheduler
[noop] anticipatory deadline cfq
#修改为cfq
$ echo 'cfq'>/sys/block/sda1/queue/scheduler
#立刻生效
$ cat /sys/block/sda1/queue/scheduler
noop anticipatory deadline [cfq]
2、 内存
a) 关闭虚拟内存
[root@localhost postgres]# cat /proc/sys/vm/swappiness
0
范围(0-100),值越大虚拟内存越大,所以此处设置为0,但是是单次生效。
永久生效,修改/etc/sysctl.conf,最后添加:
vm.swappiness = 0
然后执行sysctl –p,配置生效。
b) 调整overcommit
查看命令cat /proc/sys/vm/overcommit_memory
可选值:0、1、2。
0, 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
1, 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
2, 表示内核允许分配超过所有物理内存和交换空间总和的内存。(例如:vm.overcommit_memeory=2 vm.overcommit_ratio=95(配对参数,默认为1) 可分配内存为 虚拟内存+0.95*物理内存)
三种修改方式如下:
(1)编辑/etc/sysctl.conf ,改vm.overcommit_memory=1,然后sysctl -p使配置文件生效
(2)sysctl vm.overcommit_memory=1
(3)echo 1 > /proc/sys/vm/overcommit_memory
3、 Postgresql配置优化
a)
Shared_buffers,共享缓存区大小,1/4到1/2
b)
Work_mem ,每个进程单独分配的内存,用于排序和hash等操作。
c)
Maintence_work_mem,也是为进程分配内存,主要用于 vacuum.
d)
Huge_pages = try,开启PG大页内存。
i.
配置linux大页内存大小,首先查看大页每页大小:
[root@localhost
postgres]# grep Huge /proc/meminfo
AnonHugePages: 65536 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB(每页2M)
配置大页缓存大小,/etc/sysctl.conf
vm.nr_hugepages=
Shared_buffers/ Hugepagesize(可以适当大一些。)
sysctl –p
生效。
cat
/proc/sys/vm/nr_hugepages 检查是否生效
基于linux(CentOS7)数据库性能优化(Postgresql)的更多相关文章
- 高性能Linux服务器 第10章 基于Linux服务器的性能分析与优化
高性能Linux服务器 第10章 基于Linux服务器的性能分析与优化 作为一名Linux系统管理员,最主要的工作是优化系统配置,使应用在系统上以最优的状态运行.但硬件问题.软件问题.网络环境等 ...
- 基于SSD固态硬盘的数据库性能优化
基于SSD固态硬盘的数据库性能优化 2010-11-08 00:0051cto佚名 关键字:固态硬盘 数据库管理 SSD 企业软件热点文章 Java内存结构与模型结构分析 Oracle触发器的语法 ...
- DB2数据库性能优化介绍
DB2数据库性能优化介绍 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 前段时间,我从CSDN得到了这本书<DB2数据库性能调整和优化(第2版)& ...
- MySQL数据库性能优化与监控实战(阶段四)
MySQL数据库性能优化与监控实战(阶段四) 作者 刘畅 时间 2020-10-20 目录 1 sys数据库 1 2 系统变量 1 3 性能优化 1 3.1 硬件层 1 3.2 系统层 1 3.3 软 ...
- mysql数据库性能优化(包括SQL,表结构,索引,缓存)
优化目标减少 IO 次数IO永远是数据库最容易瓶颈的地方,这是由数据库的职责所决定的,大部分数据库操作中超过90%的时间都是 IO 操作所占用的,减少 IO 次数是 SQL 优化中需要第一优先考虑,当 ...
- GNU Linux高并发性能优化方案
/*********************************************************** * Author : Samson * Date : 07/14/2015 * ...
- SqlServer数据库性能优化详解
数据库性能优化详解 性能调节的目的是通过将网络流通.磁盘 I/O 和 CPU 时间减到最小,使每个查询的响应时间最短并最大限度地提高整个数据库服务器的吞吐量.为达到此目的,需要了解应用程序的需求和数据 ...
- 0709MySQL 数据库性能优化之表结构优化
转自http://isky000.com/database/mysql-perfornamce-tuning-schema MySQL 数据库性能优化之缓存参数优化 MySQL数据库性能优化之硬件瓶颈 ...
- MySQL数据库性能优化:表、索引、SQL等
一.MySQL 数据库性能优化之SQL优化 注:这篇文章是以 MySQL 为背景,很多内容同时适用于其他关系型数据库,需要有一些索引知识为基础 优化目标 减少 IO 次数IO永远是数据库最容易瓶颈的地 ...
随机推荐
- Spring MVC过滤器HiddenHttpMethodFilter
浏览器form表单只支持GET与POST请求,而DELETE.PUT等method并不支持,spring3.0添加了一个过滤器,可以将这些请求转换为标准的http方法,使得支持GET.POST.PUT ...
- sass scss less 的编译工具 koala
使用 koala 时注意事项: 1.目录中一定不能出现中文,否则就会报错 2.文件中如果出现中文(!注释也算) 开头一定要加 @charset "utf-8"; 否则就会出现无 ...
- 送书福利| Python 完全自学手册
前言 这里不讨论「能不能学,要不要学,应不应该学 Python」的问题,这里只会告诉你怎么学. 首先需要强调的是,如果 Python 都学不会,那么我建议你考虑别的行业,因为 Python 之简单,令 ...
- zstack分配的虚拟机的dns设置
环境: $ uname -a Linux 10-57-19-61 2.6.32-504.el6.x86_64 #1 SMP Wed Oct 15 04:27:16 UTC 2014 x86_64 x8 ...
- STM32 USB开发(三) 基于F105RBT6核心板开发的自定义HID收发(FS)
硬件设计 该核心板的USB插口有两个,一个是用于USB Slave的,可以用来做HID设备,把模拟STM32模拟为U盘等:另一个是USB Host设备,可以对插上的U盘的数据进行读写. 图中J2是Mi ...
- fastjson @JSONField
此文来源于:https://blog.51cto.com/xiaok007/2164029 1.作用在FIELD(成员变量上) 注意:1.若属性是私有的,必须有set*方法.否则无法反序列化. pac ...
- Linux下安装tomcat与配置
准备工作:将下载好的tomcat 9.0上传到自己的阿里云服务器(推荐根目录下) 附下载地址:https://archive.apache.org/dist/tomcat/tomcat-9/v9.0. ...
- hdu-4738.Caocao's Bridges(图中权值最小的桥)
Caocao's Bridges Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- 程序员听到bug后的N种反应…
程序员的世界里, 不止有代码, 还有bug,bug,bug- 当出现bug时, 程序员们的反应是怎样的呢? 作者:苏小喵,来源:小花小画(微信号:hua-little) - END - 推荐阅读: 1 ...
- H264 RTP包解析
1. 预备 视频: 由一副副连续的图像构成,由于数据量比较大,因此为了节省带宽以及存储,就需要进行必要的压缩与解压缩,也就是编解码. h264裸码流: 对一个图像或者一个视频序列进行压缩,即产生码流 ...