#每日一记#解决了一个oracle登录缓慢的问题
  

新手781833 11891人觉得有帮助

{{ttag.title}}
本帖最后由 新手781833 于 2020-10-9 16:25 编辑

    项目的页面访问缓慢,要我们查一下原因。前端开发的同事查了一下,说是由于数据库操作缓慢,导致页面响应时间比较长。我登录到数据库服务器,用vmstat查了一下,发现系统的idle非常高,说明服务器基本没有压力。又让前台把前台用到的sql发给我,分别执行了一下,发现查询时间都很短。感觉应该不是数据库的问题,于是让前台同事加多点日志继续定位,看是不是其它问题。
    前端同事忙了一会儿,终于发现了真正的原因:每次连接请求第一次操作数据库时都比较慢。查了一下源码,发现每个请求程序第一次操作数据库时都需要先连接一次数据库,而我们的数据库登录一次普通都要花上几秒钟。而一个页面有时需要发好几个请求,如果顺序处理就要花上十几秒才能返回。(由于是测试环境,设置的并发数不高,才4个)
    我让前端同事改为数据库连接后不要释放,在所有请求里面复用。但前端同事表示它用的是php传统的部署方式,每次请示都需要fork一个新进程处理,请求处理完所有资源都会被释放,没办法这样做。没办法,只能回到数据库来,看有没有办法优化数据库登录速度。我登录到数据库主机,执行以下命令查看数据库连接情况:
while [ 1 ]; do tnsping orcl; sleep 1; done
    发现即使在数据库主机上,执行tnsping耗时也是比较长的。网上查了一下,说可能是由于监听日志太大导致的。虽然想不通为什么日志的大小会影响程序性能,不过还是试了一下:找到数据库的监听文件,发现有2G多。于是把监听停了,然后删除日志文件重启。同时我还查了一下数据库的表空间占用情况,发现system空间几乎要满了。于是我顺便清理了一下system空间。清理过程中发现占用空间最大的是审计结果表。考虑到我们的数据库是在开发环境用的,不需要开审计,浪费空间又浪费性能,于是顺手把数据库审计也关了。经过以上操作后,发现数据库连接快了不少,大部分时候tnsping在1秒之内。
    但奇怪的是偶尔还会有一两次(出现概率大概是1/20)tnsping要花上几秒钟才返回的情况。网上查了一下,看有没有人碰上oracle数据库登录时快时慢的问题,没找到相关的文章。但发现有一个人提到他们数据库服务器配置的dns服务器id错误,导致数据库连接缓慢的问题,原因是oracle在客户端登录时,会尝试使用客户端的机器名去dns服务器查找对应的ip。如果dns服务器ip配置错误就会导致登录耗时比较长。
    于是我打开机器的配置文件/etc/resolv.conf 看一下,看会不会我们也配置错误了。不过发现里面配置的dns服务器为114.114.114.114,这是电信提供的公开的dns(类似谷歌提供的8.8.8.8),在我们机器上是可以正常连接的。dns服务器没配置错,不过我想了一下,我们的机器都是内网的,使用公网的dns查局域网机器名肯定是查不到的。根据以前的开发经验,查不到数据耗时肯定比查得到耗时长不少(因为本地缓存找不到,要访问远端机器)。
    如果希望通过dns查找内网机器名ip,需要搭建局域网内部的dns服务器,太麻烦了。考虑到这台数据库服务器除了使用yum安装软件外,平时没必要访问外网,于是把dns配置屏蔽了。

# Generated by NetworkManager
# nameserver 114.114.114.114
修改配置后重新执行
while [ 1 ]; do tnsping orcl; sleep 1; done
发现现在返回的tnsping数据都很正常了,不会再出现偶尔耗时异常的情况。
让前台同事试一下网页操作,也反馈现在系统反应速度很快,问题到此完美解决了。

后记:每次请求连接一次数据库始终不是一个好做法,后来我请教了一个比较有经验的同事,他介绍了一个数据库连接池中间件,说用这个可以解决php频繁连接数据库的问题

打赏鼓励作者,期待更多好文!

打赏
1人已打赏

发表新帖
热门标签
全部标签>
每日一问
技术盲盒
技术笔记
干货满满
技术咨询
新版本体验
GIF动图学习
功能体验
产品连连看
标准化排查
自助服务平台操作指引
2023技术争霸赛专题
运维工具
通用技术
秒懂零信任
技术晨报
信服课堂视频
用户认证
安装部署配置
深信服技术支持平台
安全攻防
SDP百科
设备维护
社区帮助指南
答题自测
每日一记
玩转零信任
畅聊IT
专家问答
技术圆桌
在线直播
MVP
网络基础知识
升级
上网策略
测试报告
日志审计
问题分析处理
流量管理
云计算知识
原创分享
解决方案
sangfor周刊
VPN 对接
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
功能咨询
终端接入
授权
资源访问
地址转换
虚拟机
存储
迁移
加速技术
排障笔记本
产品预警公告
信服圈儿
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
答题榜单公布
纪元平台
卧龙计划
华北区拉练
天逸直播
以战代练
山东区技术晨报
文档捉虫活动
齐鲁TV
华北区交付直播
每周精选

本版版主

12
185
6

发帖

粉丝

关注

本版达人

LoveTec...

本周分享达人

新手24116...

本周提问达人