V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
cobbage
V2EX  ›  程序员

这周或许解了之前某段时间的疑惑

  •  
  •   cobbage · 25 天前 via Android · 1489 次点击
    工作了十年牛马这周又学了个技能!

    这两年在搞运维,也有些优化类的工作。这周学到的技能点是库里面的链接信息有客户端的机器和 pid 。但是 java 的默认是 1234 。也就是说看 java 程序的链接只能找到机器定位不到程序的,另外链接也是有状态的。

    也可能化解了我之前的一个疑问?公司的一个老系统居然能监控到未释放的链接,有段时间我一直再网上找这样的包但没找到!这次问题我又看了下老系统拿的链接 jdbc 都是从统一的地方拿的从古老的 tomcat 配置的连接池。所以他能监控,这应该是那段时间的疑惑!
    5 条回复    2025-06-23 18:56:36 +08:00
    guyeu
        1
    guyeu  
       25 天前 via iPhone
    没有上下文实在看不下去。。。


    这是个规范的问题,在创建数据库会话时是否把客户端的一些信息传递给服务器是需要程序控制的。
    cobbage
        2
    cobbage  
    OP
       25 天前 via Android
    @guyeu 数据库 oracle 的。tomcat web 程序拿不到链接宕机了。别的部门系统在排查连接数的(但他们上来有点恶心)。数据库 session 信息的状态不是 active 的(这些是连接池的空闲链接),没有关联的 sql 的,只能找到机器,pid 是没的)
    guyeu
        3
    guyeu  
       23 天前
    头疼,你所处的位置,你面对的上下文别人是没有的,大多数人看到你这样的表达直接就略过了,理解起来实在难受。

    我的评论是针对 “库里面的链接信息有客户端的机器和 pid” 的,数据库客户端在创建连接时,可以通过代码或配置的方式,传递一些客户端信息(不仅说 JDBC 和 Oracle ,几乎所有的商业化数据库都有类似机制),各个客户端的默认配置可能有所出入,你所谓的“机器和 PID”,所有的数据库都能读到客户端的 IP 和端口号,这是 TCP 决定的,如此就可以定位到客户端进程(并不需要客户端的 PID )。

    重点:每一个字段都不是凭空来的,都是客户端的程序配置的,配置的方式在你使用的客户端的文档里有,运维或 DBA 有这方面的需求,应该制定规范,或者把规范封装成 library 。

    两手一摊朝天要饭,是要不来 PID 的。
    cobbage
        4
    cobbage  
    OP
       23 天前 via Android
    @guyeu pid 我看了 plsql (这类工具是有的。jdbc 跟我在网上找的一个说明是对应的默认 1234 。至于 jdbc 能不能穿 pid 这个我后面再了解下。
    cobbage
        5
    cobbage  
    OP
       23 天前 via Android
    @guyeu 没太多上下文一部分个人表达问题,一部分在地铁上用手机写的
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3109 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 11:22 · PVG 19:22 · LAX 04:22 · JFK 07:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.