java mail: set

本文记录了一次生产环境中邮件发送线程挂起的问题排查过程。问题表现为多个邮件发送线程在Socket读取阶段阻塞。通过互联网搜索并调整JavaMail的SMTP超时设置,最终解决了此问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Problem: email thread is hanging at socket read

Today we found a email problem in production, all of the mail threads (3 threads) are hanging/sitting/blocking at same point

 

 

 

 

I search the "javax.mail.Transport.send" and "com.sun.mail.smtp.SMTPTransport.readServerResponse", got no hits.

while my colleague get answer from internet. 

 

http://jira.sakaiproject.org/browse/KNL-96

http://forums.sun.com/thread.jspa?forumID=43&threadID=474662

 

"I have a servlet which uses JavaMail to send out emails to a smtp server. During our peak access hours, we have many requests to send out emails, after a while my application went into CLOSE WAIT accumulation and finally my application server stops processing."

 

 

Solution

"JavaMail send() method is synchronous call. If the smtp server does not return a response JavaMail may wait forever.

Therefore you should set the smtp timeout properties:
mail.smtp.connectiontimeout
mail.smtp.timeout"

 

 

My postmortem 


1. try different search keywords in problem description : blocking, handing, never return. setting...

2. try different API:"javax.mail.Transport.send

"javax.mail.Transport.send" is abstract API.

"com.sun.mail.smtp.SMTPTransport.readServerResponse" is bottom.

Try a middle point: com.sun.mail.smtp.SMTPTransport.connect

3.We do not get the root cause: why 'CLOSE_WAIT ' accumulation.

   It means one peer of socket connection is closed, while the other do not.

Tcp_state_diagram


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FireCoder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值