From: Dieter D'H. <di...@dh...> - 2006-09-02 17:47:12
|
On 9/2/06, Kenji Inoue <ke...@oc...> wrote: > I don't know whether FreeBSD and perl or signal handling on FreeBSD improved or > not, but as of 2006, I think it is better to use the commented-out code for the > default one. Linux is one that is majoring. > > Do you have any idea? I was thinking of maybe moving the async DNS lookup to a worker thread(s) in a queueing system: use threads; use threads::shared; use Thread::Queue; use Thread::Use; when the server start u create x worker threads (the number of threads can be changed in the config so you can adjust it for the load you get on your server). We don't create a new thread with every request cause the overhead of creating ithreads in the mainloop is way to big. We use queues to request something to be done by the thread and shared vars to communicate. It's hard to find a good and solid system for nonlagging operations in a perl server that is crossplatform windows,linux,bsd. forking is efficient on linux, but on windows it uses the ithreads emulating anyhow, and ithreads makes a copy of all data to the new thread when they are being created resulting in a lot of overhead. And with a tetrinetserver it is very important IMHO that the server doesn't lag, not only the DNS lookups can cause that, but also the autosaving of the database (all reading/writing from/to disk). BTW, maybe switching to DBI for the database in stead of plain text would be a good idea to. Dieter D'Hoker |