PostgreSQL 数据库出现这样的错误是怎么回事呢?

红薯 发布于 06/21 11:04
阅读 721
收藏 1

应用报如下异常:

系统日志:

还有这种自杀行为:

这大概是怎么回事啊?

加载中
0
宏哥
宏哥

你的linux内核 最小共享内存参数没有配置正确,导致数据库无法启动。

你设置了数据库的share buffer, 需要调整内核参数

 

Modify Kernel Params

Cd /etc/sysctl.d

Vi 20-pexcel.conf

 

 

kernel.shmmax = 2684354560

kernel.msgmni=100000

kernel.msgmax=8192000

kernel.msgmnb=163840000

巴拉迪维
巴拉迪维
我 sysctl -n 看了那几个参数,都有设置,而且还不小呢。
0
宏哥
宏哥

引用来自“宏哥”的评论

你的linux内核 最小共享内存参数没有配置正确,导致数据库无法启动。

你设置了数据库的share buffer, 需要调整内核参数

 

Modify Kernel Params

Cd /etc/sysctl.d

Vi 20-pexcel.conf

 

 

kernel.shmmax = 2684354560

kernel.msgmni=100000

kernel.msgmax=8192000

kernel.msgmnb=163840000

这个文件我是增加的

0
巴拉迪维
巴拉迪维

引用来自“宏哥”的评论

你的linux内核 最小共享内存参数没有配置正确,导致数据库无法启动。

你设置了数据库的share buffer, 需要调整内核参数

 

Modify Kernel Params

Cd /etc/sysctl.d

Vi 20-pexcel.conf

 

 

kernel.shmmax = 2684354560

kernel.msgmni=100000

kernel.msgmax=8192000

kernel.msgmnb=163840000

引用来自“宏哥”的评论

这个文件我是增加的

我直接修改 sysctl.conf 了。。。 

而且,kernel.shmmax 设置的比你给的这个数字还要大很多。。。

0
宏哥
宏哥

引用来自“宏哥”的评论

你的linux内核 最小共享内存参数没有配置正确,导致数据库无法启动。

你设置了数据库的share buffer, 需要调整内核参数

 

Modify Kernel Params

Cd /etc/sysctl.d

Vi 20-pexcel.conf

 

 

kernel.shmmax = 2684354560

kernel.msgmni=100000

kernel.msgmax=8192000

kernel.msgmnb=163840000

引用来自“宏哥”的评论

这个文件我是增加的

引用来自“巴拉迪维”的评论

我直接修改 sysctl.conf 了。。。 

而且,kernel.shmmax 设置的比你给的这个数字还要大很多。。。

你能否确认每个参数都比这个大,而且内存实际生效的数是一致的。

目前看来是 共享内存被破坏

另外, 你们在这个机器上有没有其它应用

0
巴拉迪维
巴拉迪维

引用来自“宏哥”的评论

你的linux内核 最小共享内存参数没有配置正确,导致数据库无法启动。

你设置了数据库的share buffer, 需要调整内核参数

 

Modify Kernel Params

Cd /etc/sysctl.d

Vi 20-pexcel.conf

 

 

kernel.shmmax = 2684354560

kernel.msgmni=100000

kernel.msgmax=8192000

kernel.msgmnb=163840000

引用来自“宏哥”的评论

这个文件我是增加的

引用来自“巴拉迪维”的评论

我直接修改 sysctl.conf 了。。。 

而且,kernel.shmmax 设置的比你给的这个数字还要大很多。。。

引用来自“宏哥”的评论

你能否确认每个参数都比这个大,而且内存实际生效的数是一致的。

目前看来是 共享内存被破坏

另外, 你们在这个机器上有没有其它应用

kernel.shmmax 参数本来就设置的很大,大概是你给的这个值的两倍,所以我没动。

其他几个参数都很小,我修改成你给的那几个值了。

这机器上没有其他任何应用了,值跑一个 PG 而已。

刚修改了内核参数,重启了一次,现在似乎看起来是正常的,我还在观察日志。。。

0
宏哥
宏哥

引用来自“宏哥”的评论

你的linux内核 最小共享内存参数没有配置正确,导致数据库无法启动。

你设置了数据库的share buffer, 需要调整内核参数

 

Modify Kernel Params

Cd /etc/sysctl.d

Vi 20-pexcel.conf

 

 

kernel.shmmax = 2684354560

kernel.msgmni=100000

kernel.msgmax=8192000

kernel.msgmnb=163840000

引用来自“宏哥”的评论

这个文件我是增加的

引用来自“巴拉迪维”的评论

我直接修改 sysctl.conf 了。。。 

而且,kernel.shmmax 设置的比你给的这个数字还要大很多。。。

引用来自“宏哥”的评论

你能否确认每个参数都比这个大,而且内存实际生效的数是一致的。

目前看来是 共享内存被破坏

另外, 你们在这个机器上有没有其它应用

引用来自“巴拉迪维”的评论

kernel.shmmax 参数本来就设置的很大,大概是你给的这个值的两倍,所以我没动。

其他几个参数都很小,我修改成你给的那几个值了。

这机器上没有其他任何应用了,值跑一个 PG 而已。

刚修改了内核参数,重启了一次,现在似乎看起来是正常的,我还在观察日志。。。

kernel.shmmax  这个参数和你的PG 配置的share buffer相关

你问一下德哥这个计算公式, 你比我大一倍不见得够

我这里设置的是 内存的1/2. 

我这里是并发小的复杂应用,你是并发大的应用, 特别是java那个王八蛋, 产生大量的连接池

mark35
mark35
公司有台云上的tomcat的短信服务器。偶尔pg会自动重启服务(日志和lz的差不多), 我怀疑是java把内存吃光了导致的。于是让运维把内存从2G提升到4G,以后pg一切正常。 java这个吃货……
0
巴拉迪维
巴拉迪维

引用来自“宏哥”的评论

你的linux内核 最小共享内存参数没有配置正确,导致数据库无法启动。

你设置了数据库的share buffer, 需要调整内核参数

 

Modify Kernel Params

Cd /etc/sysctl.d

Vi 20-pexcel.conf

 

 

kernel.shmmax = 2684354560

kernel.msgmni=100000

kernel.msgmax=8192000

kernel.msgmnb=163840000

引用来自“宏哥”的评论

这个文件我是增加的

引用来自“巴拉迪维”的评论

我直接修改 sysctl.conf 了。。。 

而且,kernel.shmmax 设置的比你给的这个数字还要大很多。。。

引用来自“宏哥”的评论

你能否确认每个参数都比这个大,而且内存实际生效的数是一致的。

目前看来是 共享内存被破坏

另外, 你们在这个机器上有没有其它应用

引用来自“巴拉迪维”的评论

kernel.shmmax 参数本来就设置的很大,大概是你给的这个值的两倍,所以我没动。

其他几个参数都很小,我修改成你给的那几个值了。

这机器上没有其他任何应用了,值跑一个 PG 而已。

刚修改了内核参数,重启了一次,现在似乎看起来是正常的,我还在观察日志。。。

引用来自“宏哥”的评论

kernel.shmmax  这个参数和你的PG 配置的share buffer相关

你问一下德哥这个计算公式, 你比我大一倍不见得够

我这里设置的是 内存的1/2. 

我这里是并发小的复杂应用,你是并发大的应用, 特别是java那个王八蛋, 产生大量的连接池

kernel.shmmax 要设置为内存的一半?那我的参数还要改。。。

我去找德哥问问吧!

感谢宏哥回复。

0
宏哥
宏哥

引用来自“宏哥”的评论

你的linux内核 最小共享内存参数没有配置正确,导致数据库无法启动。

你设置了数据库的share buffer, 需要调整内核参数

 

Modify Kernel Params

Cd /etc/sysctl.d

Vi 20-pexcel.conf

 

 

kernel.shmmax = 2684354560

kernel.msgmni=100000

kernel.msgmax=8192000

kernel.msgmnb=163840000

引用来自“宏哥”的评论

这个文件我是增加的

引用来自“巴拉迪维”的评论

我直接修改 sysctl.conf 了。。。 

而且,kernel.shmmax 设置的比你给的这个数字还要大很多。。。

引用来自“宏哥”的评论

你能否确认每个参数都比这个大,而且内存实际生效的数是一致的。

目前看来是 共享内存被破坏

另外, 你们在这个机器上有没有其它应用

引用来自“巴拉迪维”的评论

kernel.shmmax 参数本来就设置的很大,大概是你给的这个值的两倍,所以我没动。

其他几个参数都很小,我修改成你给的那几个值了。

这机器上没有其他任何应用了,值跑一个 PG 而已。

刚修改了内核参数,重启了一次,现在似乎看起来是正常的,我还在观察日志。。。

引用来自“宏哥”的评论

kernel.shmmax  这个参数和你的PG 配置的share buffer相关

你问一下德哥这个计算公式, 你比我大一倍不见得够

我这里设置的是 内存的1/2. 

我这里是并发小的复杂应用,你是并发大的应用, 特别是java那个王八蛋, 产生大量的连接池

引用来自“巴拉迪维”的评论

kernel.shmmax 要设置为内存的一半?那我的参数还要改。。。

我去找德哥问问吧!

感谢宏哥回复。

share buffer会受到连接数影响线性增长

0
mark35
mark35

pg进程自杀重启基本和内存有关

0
宏哥
宏哥

引用来自“mark35”的评论

pg进程自杀重启基本和内存有关

这个已经查出来了, 是有另外进程占用大量内存

陈诚暖
陈诚暖
宏哥, 看了你很多的回复. 请教你一下. 用GIN索引实现任意字段搜索. 内部的本质是不是还是针对每个字段索引呢? 想装个postgresql测试, 装半天也没装好. 任意字段搜索/求和, 宏哥有没更好的方案推荐?
返回顶部
顶部