[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邮件服务接收邮件慢的问题之解决方案相关推荐

  1. exchange 2007客户端outlook express邮件和接收邮件的设置

    exchange 2007客户端outlook express邮件和接收邮件的设置 下面是在发送邮件的时候outlook express给出的提示信息 由于服务器拒绝接受发件人的电子邮件地址,这封邮件 ...

  2. java如何接收邮件_java Exchange服务接收邮件

    标签:/** serverName 接收邮件地址 user 用户信息 pwd 密码 path 邮件临时储存路径 max 每次接收邮件的最大数量 **/ public int receive(Strin ...

  3. mysql开启邮件服务_邮件服务

    一.基础配置 1.需要两台环境纯净的虚拟机 2.更改主机名分别为   westos-mail.westos.com   和  qq-mail.qq.com 3.配置两台虚拟机的yum源,使两台虚拟机可 ...

  4. 20. 邮件提醒(接收邮件)

    接收邮件的协议有POP3(Post Office Protocol)和IMAP(Internet Message Access Protocol), Python内置poplib模块实现了POP3协议 ...

  5. mysql开启邮件服务_邮件服务之实现基于虚拟用户的虚拟域邮件系统

    postfix+dovecot+SASL+mysql+apache+extmail+extman实现基于虚拟用户的虚拟域邮件系统 声明:省略了前面的基础配置包括安装MYSQL,postfix等,这里用 ...

  6. aws 邮件服务器 接收邮件,Amazon SES

    问:Amazon SES 是否提供 SMTP 终端节点? Amazon SES 提供 SMTP 接口,以实现与能够通过 SMTP 发送电子邮件的应用程序的无缝集成.您可从应用程序直接连接至此 SMTP ...

  7. postfix邮件服务

    一.postfix介绍1. postfix提供smtp协议用来投递邮件 默认端口25 /var/log/maillog##服务日志 mail root@westos.com   ##发送一封邮件 Su ...

  8. linux下重启邮件服务,Linux的postfix邮件服务

    一.postfix邮件服务 Postfix 是一种电子邮件服务器,postfix提供smtp协议用来投递邮件 默认端口25 /var/log/maillog    服务日志 mail root@wes ...

  9. LinuxPostfixsendEmail邮件服务

    Linux&&Postfix&&sendEmail&&邮件服务 了解邮件服务器 邮件系统包含哪几个邮件系统角色? 邮件服务的相关协议有哪些? 常见的MT ...

最新文章

  1. 8、mybatis之增删改查
  2. Vue2.x双向数据绑定
  3. 分区分表实验用的语句
  4. IT管理人才必备的十大能力(转)
  5. Zebra项目:分析、实施与测试
  6. 好消息,scott的asp.net 2.0数据导航系列全部出版了
  7. POJ 1664 放苹果(递归或DP)
  8. 计算机考研复试题目大全
  9. js实现图片的透明度运动
  10. 各类木材强度_常用木材防腐剂有哪些
  11. c++自动抢购_软件神器—全网口罩监控抢购
  12. 小黄鸡 java_用java实现Simsimi小黄鸡接口
  13. java 正则校验经纬度格式
  14. 丁火生于未月命理分析_丁火生于未月的性格特征
  15. EasyFlash 里的 EF_WRITE_GRAN
  16. 湿冷天扫除前挡玻璃视障 应该怎么选?
  17. UIWebView、UITextView 和UILable 设置行间距
  18. TEST | 运用position:absolute做一张太极图
  19. 你绝对没用过的三电源切换电路
  20. Android手机投屏初探

热门文章

  1. Java多线程(详细了解java多线程机制)
  2. 国泰君安国际:华能新能源维持买入
  3. JavaScript 内存泄露的4种方式及如何避免
  4. 氢能产业进入提速阶段,重塑科技将持续发力氢能应用市场
  5. e9000服务器kvm虚拟化,融合平台性能王者 华为E9000服务器解析
  6. USACO-Cave Cows 3
  7. jzoj3690. 【CF418D】Big Problems for Organizers/codeforces418D
  8. 巴西vs法国-----太精彩了
  9. 我的世界观 阿尔伯特·爱因斯坦
  10. 文本挖掘:LDA模型对公号文章主题分析