NJB> Eugene,

NJB> If you are testing, try the 2.2.0a1 test build.  It has some performance
NJB> improvements that may impact your application.
OK. I downloaded this version and am trying.

>> the Database repository is used. The database is McKoi 0.94h.

NJB> Are you aware of a problem with very slow inserts in McKoi?

NJB>   see: http://www.mckoi.com/database/FAQ.html#9_3

NJB> Also, McKoi v1.0 apparently improved the page cache, and fixed memory leaks.
NJB> See their change log.

Yes, the McKoi is slower MySQL. But I think it's no cause of this
behavior.
Therefore I made tests for MySQL also.
The results(strange for MySQL) in next letter.

>> - the JVM is started with settings -Xms256m -Xmx1024m. In default
>>   (64Mb) the Out of Memory occurs for 7500(and more) users in mail list

NJB> If you are doing memory profiling, please let us know the types and origin
NJB> of the objects taking up the heap.  If they are LinkedList.Entry objects,
NJB> they will confirm my suspicions.
I'm checking the whole memory that JVM demands.

I'll try retest with memory profiling

>> - in settings - <deliveryThreads> 2 </deliveryThreads>

NJB> This should not matter for local delivery.

>> 1) Why does the speed of delivery decrease after 2500 users?
>> 2) Why does James use such big memory for sending letters?

NJB> There is a known issue with the list() methods on the repositories.
NJB> Partially it is a mismatch of Avalon repository methods returning an
NJB> Iterator and JavaMail methods wanting a Collection. So the repository clones
NJB> its Collection and returns an Iterator, but then the caller uses the
NJB> Iterator to populate a new Collection.

NJB> And sometimes there is just some code that needs to be better optimized.  In
NJB> the case of AbstractJdbcUsersRepository, listAllUsers() makes a LinkedList
NJB> and returns an Iterator.  Then listUserNames() makes a LinkedList, which it
NJB> populates from the Iterator returned by listAllUsers().  Then list() returns
NJB> an Iterator on listUserNames().  Finally, getMembers() creates a Vector from
NJB> the Iterator it received from list(). This happens for every message.

NJB> LinkedLists are terrible inefficient for space, and the cloning operations
NJB> are terribly slow.  I've done some optimizing inside of the mail
NJB> repositories, but no one has done any inside of the user repositories.  I'll
NJB> see if I can make a quick fix, and we can see if it helps.

OK. Clearly.

>> 3) Also I see that in table spool in recipients field the ALL
>>    emails of mail list are placed. May be better for delivery to cut
>>    this to a little lists (up to 1000 or 2000 users) and send them
NJB> separately?

NJB> Unclear.  The other changes are more likely to improve performance.
I mean that in spool the letter is placed. This letter contains all
emails of list. May be better to break this for some letters that will
contain part emails of list.
For example
one letter was spooled with 'recipients' like
testUser1TestUser2...testUser9999testUser10000

I mean  next
first spooled letter is spooled with 'recipients' like
testUser1TestUser2...testUser1000

second spooled letter -
testUser1001TestUser2...testUser2000

third spooled letter
testUser2001TestUser2...testUser3000
...
And up to 10th spooled letter

In other words Can process the huge mail list in parts?

NJB>         --- Noel


NJB> ---------------------------------------------------------------------
NJB> To unsubscribe, e-mail: [EMAIL PROTECTED]
NJB> For additional commands, e-mail: [EMAIL PROTECTED]




Best regards, Eugene                          mailto:[EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to