Press "Enter" to skip to content

月度归档: 2021 年 1 月

java 查看线程开始执行时间

有的时候,我们想知道我们的java哪些是阻塞的,如果我们用jstack命令进行线程栈快照,我们只能知晓当前时刻点的线程状态,但是线程什么时候创建的,什么时候销毁的,全然不知。 思路 我们可以使用操作系统的ps命令来观察系统线程的创建时间,将线程的id和jstack的线程栈关联,即可知道我们jvm的当前线程栈中某个线程是何时创建的。 操作 使用jstack -l pid > dump.log …

Leave a Comment

记一次线上java生产事故(CallerRunsPolicy)

关键词 ThreadPoolExecutor.CallerRunsPolicy() 起因 早晨上班不久后,突然系统告警,商品服务延迟特别大。 由于其他几个后端服务和商品服务的依赖关系特别大,导致其他服务接连奔溃。由于目前各个系统没有做服务降级,在依赖服务(商品服务)出现阻塞,延迟响应缓慢之后,自身服务也出现阻塞现象。 后端服务接连奔溃,前端业务系统马上感受到影响,逐个失能。 处理 马上导出线上应用…

1 Comment

Java如何判断socket连接是否已经断开(Java socket API: How to tell if a connection has been closed?)

没有任何TCP API可以告诉您当前的连接状态。 isConnected()和isClosed()是告诉你套接字的当前状态。 和连接状态不是一样的东西。 isConnected()告诉你是否已连接此套接字。 你已经链接了因此它返回true。 isClosed()告诉你是否已关闭此套接字。 除非有,否则它返回false。 如果对方(peer)有序地关闭了连接 read()返回-1readLine()…

1 Comment

NodeJs断开socket链接应该使用destory还是end?

最近在写一点通讯方面的代码,我的程序逻辑可能在判断到某些异常是需要断开客户端socket的链接。 看官方文档,提供了 client.end() 方法和 client.destory()方法,好像都可以用来断开连接。 看官方描述,如果你调用了end方法,你会将socket置于半关闭(Half-closes)状态,然后他会发送一个 FIN 包给对端,这个时候呢,服务器可能还是会发送数据给你的。(表示这…

Leave a Comment

使用curator定期清理Elasticsearch数据

因为我的elasticsearch是用来存储各种日志数据的,需要周期的把数据清理掉,不然磁盘要炸了。 Stack里面有个 Index Lifecycle Policies 好像也可以完成这个工作,没研究明白。 这里记录下使用curator来进行index的清理。 安装curator elastic官方给的下载地址:https://www.elastic.co/guide/en/elasticsea…

Leave a Comment