【问题标题】:How to release access to application from tomcat on ubuntu 12.04如何在 ubuntu 12.04 上释放对应用程序的访问权限
【发布时间】:2012-07-31 08:16:19
【问题描述】:

在 Windows 中,当我停止 tomcat 时,应用程序将释放对数据库的保留,因为应用程序将与 tomcat 一起停止......但在 Ubuntu 中,即使我停止 tomcat 应用程序,它也不会释放对数据库的访问。

我试过了

sudo /etc/init.d/tomcat6 stop
sudo service tomcat6 stop

我不能使用 pkill,因为如果我终止进程,甚至与数据库服务器的连接也会被释放。我需要手动启动它。我只想释放应用程序对数据库的访问权限。我该怎么做?

tomcat 是否在任何地方保存该应用程序?或者还有其他处于暂停状态的进程?

是什么造成了 Windows 和 Ubuntu 之间的差异?

【问题讨论】:

  • “不释放对数据库的持有”是什么意思?与数据库连接相关的过程是否持续存在?您是否尝试过在服务器上开启 TCP keepalive 数据包?
  • 是的..我可以看到正在使用数据库的进程 ID..只有应用程序正在使用 postgresql 数据库..如何检查服务器上的 tcp 数据包?

标签: postgresql tomcat ubuntu tomcat6 ubuntu-12.04


【解决方案1】:

如果您通过突然杀死 tomcat 来停止它,而不是以允许正常关闭的方式停止它,它将无法发送网络数据包来告诉 PostgreSQL 连接已关闭。如果 PostgreSQL 正在监听下一个 tomcat 请求,它会等待很长时间,永远不会有任何线索表明 tomcat 已经死了。

TCP 有一个称为“keepalives”的可配置特性,它使监听器在连接空闲时定期发送数据包,以测试连接是否仍然良好。请参阅以“tcp_keepalives_”开头的connection configuration settings。我建议您尝试以下方法:

tcp_keepalives_idle = 60
tcp_keepalives_interval = 1

这将允许 PostgreSQL 在一分钟多一点的时间内检测到断开的连接,而不会造成太多开销。这将告诉 PostgreSQL 在空闲连接上等待 60 秒,然后再发送额外的数据包以测试连接是否仍然良好,并每隔一秒发送重试。 (我认为它尝试了九次。)如果没有一个数据包得到应答,PostgreSQL 将关闭连接,进程将优雅地离开。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-17
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    • 2018-02-06
    • 1970-01-01
    • 2013-02-16
    • 2014-10-26
    相关资源
    最近更新 更多