PostgreSQL(四):代码层面解决pg共享内存报错问题

代码层面解决pg共享内存报错问题

大家好,我是欧阳方超,公众号同名。在这里插入图片描述

1 概览

为一个页面写了多个接口,结果前端在同时调用这些接口时报错了,数据库又不让改相关参数,只能从代码层面解决,很沮丧。

2 问题分析

加班加点写了15个接口,由于这些接口都是为一个页面写的,所以在与前端联调时,前端就在打开这个页面时一次性把这些接口都请求了,结果报错了,数据库使用的是PostgreSQL,报错如下:

Caused by: org.postgresql.util.PSQLException: ERROR: could not resize shared memory segment "/PostgreSQL.501294234" to 1048576 bytes: No space left on device

at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2675) ~[postgresql-42.3.3.jar!/:42.3.3]

at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2365) ~[postgresql-42.3.3.jar!/:42.3.3]

at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:355) ~[postgresql-42.3.3.jar!/:42.3.3]

这个问题看着从数据库下手去修改相关参数,能够修复的可能性比较大,但是奈何数据库是统一管理的,不是我想改就能改的,甚至同事还跟我说即使你反馈了也不大可能给你修改这些参数。好吧,有时候事情就是这么难推进,那项目还得继续,怎么办呢,只能从代码角度下手了,既然这些接口单独测试的时候都能够正常调用,而在全部同时调用时报错,那就让前端一次性少调些吧,比如页面里面有5个模块,每个模块使用3个接口,那就让这些模块间调用接口时顺序执行,而模块内部的接口可以并发调用,这样改了之后还是有一个模块在调用接口时报错,经查看这个模块一次性调用了6个接口,后来又把这6个接口改为顺序调用,问题才得以解决。

3 总结

前端在打开页面时一次性请求这些接口,导致 PostgreSQL 数据库报错,提示无法调整共享内存段大小,原因是设备空间不足。由于数据库由统一管理,修改相关参数难以推进,只能从代码层面寻找解决方案。这种解决问题的方式感觉很别扭,但是在不让修改数据库的前提下,也找不到其他的方案。各位有好的思路话请不吝赐教,欢迎在评论区留言。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值