james邮件服务接收邮件慢的问题之解决方案
[size=large] 公司邮件系统采用了james作为邮件服务,并使用ORACLE作为邮件存储数据库,平时都能正常收发,但是发现收邮件很慢,发邮件速度挺快的。网上也有很多人提出比较慢,但是一直没有人提出解决方案。
昨天,我用foxmail收邮件,无意中看到收邮件的时候停顿在STAT指令阶段,于是就想:是否STAT指令有效率问题。于是CMD之后TELNET 到邮件服务器的110端口,通过指令来接受邮件,发现执行STAT的时候非常慢。STAT执行后执行LIST速度很快。这样,基本确定是STAT指令的问题。打开JAMES的源码,看看POP3HANDLER这个类,STAT中在执行邮件的统计功能,计算邮件个数和邮件总大小,看了代码,唯一可能慢的就是循环计算每个邮件的大小的时候。前后加上时间戳,编译,打包,重启JAMES后,看打出来的时间戳,发现每次取数据库连接都需要100毫秒左右。这个速度够慢的。
于是再看看数据库的配置,已经连接方式。发现JAMES默认使用的是DBCP的basicDataSource,而basicDataSource的连接并不是连接池的方式,需要每次都去获取连接。于是,基本肯定是这里造成的慢。知道问题了,解决就简单了。JAMES的config里面有说明,有2中连接方式,一个是DBCP,还有一个是Mordred。
上面有写注释:
To use DBCP: org.apache.james.util.dbcp.JdbcDataSource
To use Mordred: org.apache.james.util.mordred.JdbcDataSource
-----------
虽然Mordred不被建议使用,但是看看org.apache.james.util.mordred.JdbcDataSource
的源码,可以看到,他自己实现了一个连接池。应该是可用的,于是CONFIG里data-source的class节点换成org.apache.james.util.mordred.JdbcDataSource
,重启james。再试,虽然还是没163的MAIL那么快,但是已经比刚才快了很多。那就先用这个吧。
其实,解决方案还有很多,比如:
1:自己实现一个datasource,自己实现一个连接池。
2:在使用连接池的基础上,在邮件存储的时候就把size计算出来,单独存放到一个字段。这样获取size的时候,直接读取该字段即可,这样速度应该是要快更多。
由于比较忙,所以暂时使用了修改datasourc的clsss的解决方案。
希望这篇文章对使用james的人有些帮助。[/size]
james邮件服务接收邮件慢的问题之解决方案相关推荐
- exchange 2007客户端outlook express邮件和接收邮件的设置
exchange 2007客户端outlook express邮件和接收邮件的设置 下面是在发送邮件的时候outlook express给出的提示信息 由于服务器拒绝接受发件人的电子邮件地址,这封邮件 ...
- java如何接收邮件_java Exchange服务接收邮件
标签:/** serverName 接收邮件地址 user 用户信息 pwd 密码 path 邮件临时储存路径 max 每次接收邮件的最大数量 **/ public int receive(Strin ...
- mysql开启邮件服务_邮件服务
一.基础配置 1.需要两台环境纯净的虚拟机 2.更改主机名分别为 westos-mail.westos.com 和 qq-mail.qq.com 3.配置两台虚拟机的yum源,使两台虚拟机可 ...
- 20. 邮件提醒(接收邮件)
接收邮件的协议有POP3(Post Office Protocol)和IMAP(Internet Message Access Protocol), Python内置poplib模块实现了POP3协议 ...
- mysql开启邮件服务_邮件服务之实现基于虚拟用户的虚拟域邮件系统
postfix+dovecot+SASL+mysql+apache+extmail+extman实现基于虚拟用户的虚拟域邮件系统 声明:省略了前面的基础配置包括安装MYSQL,postfix等,这里用 ...
- aws 邮件服务器 接收邮件,Amazon SES
问:Amazon SES 是否提供 SMTP 终端节点? Amazon SES 提供 SMTP 接口,以实现与能够通过 SMTP 发送电子邮件的应用程序的无缝集成.您可从应用程序直接连接至此 SMTP ...
- postfix邮件服务
一.postfix介绍1. postfix提供smtp协议用来投递邮件 默认端口25 /var/log/maillog##服务日志 mail root@westos.com ##发送一封邮件 Su ...
- linux下重启邮件服务,Linux的postfix邮件服务
一.postfix邮件服务 Postfix 是一种电子邮件服务器,postfix提供smtp协议用来投递邮件 默认端口25 /var/log/maillog 服务日志 mail root@wes ...
- LinuxPostfixsendEmail邮件服务
Linux&&Postfix&&sendEmail&&邮件服务 了解邮件服务器 邮件系统包含哪几个邮件系统角色? 邮件服务的相关协议有哪些? 常见的MT ...
最新文章
- 8、mybatis之增删改查
- Vue2.x双向数据绑定
- 分区分表实验用的语句
- IT管理人才必备的十大能力(转)
- Zebra项目:分析、实施与测试
- 好消息,scott的asp.net 2.0数据导航系列全部出版了
- POJ 1664 放苹果(递归或DP)
- 计算机考研复试题目大全
- js实现图片的透明度运动
- 各类木材强度_常用木材防腐剂有哪些
- c++自动抢购_软件神器—全网口罩监控抢购
- 小黄鸡 java_用java实现Simsimi小黄鸡接口
- java 正则校验经纬度格式
- 丁火生于未月命理分析_丁火生于未月的性格特征
- EasyFlash 里的 EF_WRITE_GRAN
- 湿冷天扫除前挡玻璃视障 应该怎么选?
- UIWebView、UITextView 和UILable 设置行间距
- TEST | 运用position:absolute做一张太极图
- 你绝对没用过的三电源切换电路
- Android手机投屏初探