james-server-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "OG (JIRA)" <server-...@james.apache.org>
Subject [jira] Commented: (JAMES-134) Large emails in the spool cause SpoolManager to throw OutOfMemoryError
Date Wed, 20 Apr 2005 13:31:24 GMT
     [ http://issues.apache.org/jira/browse/JAMES-134?page=comments#action_63284 ]
OG commented on JAMES-134:

I don't know what is the official definition of a "blocker", but I also interpret the problem
to be a blocker since it is possible that someone would send a big message, and what happens
then is an OutOfMemoryException, James quit delivering the mail, and occupy 99% of the CPU
usage, which disturbs other processes too. So because the mail is blocked, the computer hangs,
and other processes get blocked by CPU starvation, I thought that it is a blocker. 

By the way, I tried to increase my VM page file maximum size limit, and the maximum size that
W2K allowed me is 4095MB. The JVM however is not that generous. After I increased W2K page
file limit to the max, I tried to max out the -Xmx option of java. The maximum -Xmx that java
agreed to run was 1532MB ('java -Xmx1532M'). So now if someone would send me a 1533/7=219MB
file attachment, I am doomed.

I have done another experiment, and sent myself the 40MB message again, and followed the James
'Mem Usage' column to see what happens. It started on 300MB from the previous time, then it
shrunk to about 50MB, and started to grow slowly over a couple of minutes until it was back
at 300MB. I learn from this, that the JVM heap can shrink. I learn from this that James did
something when it got the new message that it didn't do before, and that thing got the heap
to shrink. I just wish that James would clean after itself when it is done, and not just before
it start. And even more than this I wish that the programmers here wouldn't load the messages
to the memory at once. Even an antivirus that scans very big files doesn't load them at once
to the memory, so I don't see why a mailet needs to do that. OK, I understand that you are
saying that MimeMessage does just that. Probably what happens, is that the message go through
7 mailet/matcher that load it to memory 7 times. What can w
 e do? 

> Large emails in the spool cause SpoolManager to throw OutOfMemoryError
> ----------------------------------------------------------------------
>          Key: JAMES-134
>          URL: http://issues.apache.org/jira/browse/JAMES-134
>      Project: James
>         Type: Bug
>   Components: SpoolManager & Processors
>     Versions: 2.0a3, 2.1, 2.1.3, 2.2.0
>  Environment: Operating System: MacOS X
> Platform: Macintosh
>     Reporter: Matt Bishop

> Steps to repro:
> 1. Send yourself a very large email (16 megs works for me)
> 2. check the SpoolManager log and see this over and over:
> ERROR spoolmanager: Exception in JamesSpoolManager.run null
> java.lang.OutOfMemoryError
> What makes this problem particularly bad is that the spoolmanager doesn't move on to
> messages but keeps pegging the CPU trying to process this email.  To fix it, I have to
shut down 
> james, delete the email files out of spool and restart.
> EXPECTED: email should spool to the user as expected.

This message is automatically generated by JIRA.
If you think it was sent incorrectly contact one of the administrators:
For more information on JIRA, see:

To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org

View raw message