Re: [Pdns-users] pdns recursor - unthreaded vs threaded operation

2012-01-02 Thread Fabio Sangiovanni
Hi Bert,

are you planning to run multiple Lua sessions per thread in the future (in 
PowerDNS Recursor)?
If yes, do you think it will be possible to have a switch for this feature in 
recursor.conf?
I need to make a decision for my company about the use of PowerDNS Recursor in 
a project and everything depends on the possibility of having one single lua 
session per thread.

Thanks a lot for your support.

Cheers,
Fabio

Il giorno 30/dic/2011, alle ore 09:43, bert hubert ha scritto:

 On Thu, Dec 29, 2011 at 08:55:57AM +, Fabio Sangiovanni wrote:
 am I right thinking this would solve my problem?
 
 For now, and for this version of the PowerDNS Recursor, if you set threads
 to 1, you will really only get 1 simultaneous Lua session.
 
 However, this is not true in other parts of PowerDNS. In the authoritative
 server if you set 'distributor-threads=1' you might still get several
 parallel database connections. 
 
 If you are going to do synchronous SQL updates from Lua, do realize that these
 typically cost up to a millisecond including latency.
 
 This means that your Resolver will peak at 1000 qps.
 
 how deep is the impact on performances changing the number of threads from
 2 (default setting) to just 1?  are there other sensible settings that I
 could adjust to better suit my needs?
 
 You might want to look at other ways of doing statistics if you truly want
 high performance.
 
 PowerDNS right now does not offer a good interface for very rapid query
 logging, but perhaps you could use a textfile from Lua.
 
 Good luck!
 
   Bert
 

___
Pdns-users mailing list
Pdns-users@mailman.powerdns.com
http://mailman.powerdns.com/mailman/listinfo/pdns-users


Re: [Pdns-users] pdns recursor - unthreaded vs threaded operation

2011-12-30 Thread Fabio Sangiovanni
Hi Nils, thanks for your reply.

Database transactions help in terms of integrity, but they can do nothing about 
the order of data updates. If 2 threads work independently and execute the same 
update query on the db, I can't predict with certainty which one will occur 
first.

Fabio

Il giorno 30/dic/2011, alle ore 00:32, Nils Breunese (Lemonbit) ha scritto:

 Fabio Sangiovanni wrote:
 
 I'm a newbie of pdns and I'm setting up a recursor-only installation as 
 local dns cache for a high load smtp server.
 I'm using the lua scripting feature as a way to track down MX queries. In 
 particular, the preresolve() function relies on luasql to execute queries on 
 a (local) mysql database.
 This is my problem: if I enable more than one thread in recursor.conf I get 
 the lua script loaded more than once, and ultimately concurrent queries to 
 the db that could mess up the stored data, depending on the execution order 
 of select and update queries by the various threads.
 I'd like to avoid circumventing these race conditions through complicated 
 lua coding, and instead I'd prefer to keep things as simple as possible and 
 limit the number of pdns threads to just 1 (threads=1 setting in 
 recursor.conf).
 I know that the lua feature is not meant to be used this way, but this could 
 really help me solving a big problem :)
 
 Now my questions are:
 am I right thinking this would solve my problem?
 how deep is the impact on performances changing the number of threads from 2 
 (default setting) to just 1?
 are there other sensible settings that I could adjust to better suit my 
 needs?
 
 Wouldn't using database transactions solve your integrity problem?
 
 Nils.
 ___
 Pdns-users mailing list
 Pdns-users@mailman.powerdns.com
 http://mailman.powerdns.com/mailman/listinfo/pdns-users
 

___
Pdns-users mailing list
Pdns-users@mailman.powerdns.com
http://mailman.powerdns.com/mailman/listinfo/pdns-users


Re: [Pdns-users] pdns recursor - unthreaded vs threaded operation

2011-12-30 Thread Fabio Sangiovanni
Hi, thanks for your reply.

Il giorno 30/dic/2011, alle ore 09:43, bert hubert ha scritto:

On Thu, Dec 29, 2011 at 08:55:57AM +, Fabio Sangiovanni wrote:
am I right thinking this would solve my problem?

For now, and for this version of the PowerDNS Recursor, if you set threads
to 1, you will really only get 1 simultaneous Lua session.

Do you mean that this may change in the future?
Will PowerDNS Recursor eventually run more Lua sessions per thread?

However, this is not true in other parts of PowerDNS. In the authoritative
server if you set 'distributor-threads=1' you might still get several
parallel database connections.

It's ok for me, since I'm using the PowerDNS Recursor standalone, without the 
autoritative server (not useful in my use case).

If you are going to do synchronous SQL updates from Lua, do realize that these
typically cost up to a millisecond including latency.

This means that your Resolver will peak at 1000 qps.

With just 1 Lua session running I can rework the Lua code: I can schedule the 
import of data from db every 5 minutes, and use ad in-memory data structure for 
the computation I need to be done. I can also ditch the synchronous SQL 
updates, that I used just to have consistency between threads (wrong 
assumption, though).
The performance of course should increase this way, providing that just one 
PowerDNS thread is ok (the server is a high traffic smtp).
This logic wouldn't work with more than one thread, since each would have its 
own data structure.


Good luck!

Bert

Thanks!
Fabio
___
Pdns-users mailing list
Pdns-users@mailman.powerdns.com
http://mailman.powerdns.com/mailman/listinfo/pdns-users


Re: [Pdns-users] pdns recursor - unthreaded vs threaded operation

2011-12-30 Thread Fabio Sangiovanni
Ok I'm kind of a newbie here :)
My understanding of the problem is:
if I have 2 threads, running at the same time, both of them executing the same 
SQL transaction (made up of more select or update queries), how can I predict 
which one is executed first? It's just like you said: I'd need the whole thing 
to happen in a single inter-thread transaction :)
The solution, for now, is limiting Lua sessions to 1 lowering the total number 
of threads to 1. 

Fabio

Il giorno 30/dic/2011, alle ore 10:32, Nils Breunese (Lemonbit) ha scritto:

 Fabio Sangiovanni wrote:
 
 Database transactions help in terms of integrity, but they can do nothing 
 about the order of data updates. If 2 threads work independently and execute 
 the same update query on the db, I can't predict with certainty which one 
 will occur first.
 
 AFAIK no updates are committed until the transaction is committed, so all 
 queries within a transaction are guaranteed to happen as if they were one 
 modification to the database. If the order of transactions is important then 
 I think you might need to rethink your logic, because then the whole thing 
 would need to happen in a transaction. I'm not sure what you're trying to do 
 exactly, but it sounds like transactions should be able to help here.
 
 Nils.
 
 ___
 Pdns-users mailing list
 Pdns-users@mailman.powerdns.com
 http://mailman.powerdns.com/mailman/listinfo/pdns-users
 

___
Pdns-users mailing list
Pdns-users@mailman.powerdns.com
http://mailman.powerdns.com/mailman/listinfo/pdns-users


[Pdns-users] pdns recursor - unthreaded vs threaded operation

2011-12-29 Thread Fabio Sangiovanni
Hello list,

I'm a newbie of pdns and I'm setting up a recursor-only installation as local 
dns cache for a high load smtp server.
I'm using the lua scripting feature as a way to track down MX queries. In 
particular, the preresolve() function relies on luasql to execute queries on a 
(local) mysql database.
This is my problem: if I enable more than one thread in recursor.conf I get the 
lua script loaded more than once, and ultimately concurrent queries to the db 
that could mess up the stored data, depending on the execution order of select 
and update queries by the various threads.
I'd like to avoid circumventing these race conditions through complicated lua 
coding, and instead I'd prefer to keep things as simple as possible and limit 
the number of pdns threads to just 1 (threads=1 setting in recursor.conf).
I know that the lua feature is not meant to be used this way, but this could 
really help me solving a big problem :)

Now my questions are:
am I right thinking this would solve my problem?
how deep is the impact on performances changing the number of threads from 2 
(default setting) to just 1?
are there other sensible settings that I could adjust to better suit my needs?

Thanks a lot for your support.

Cheers,
Fabio
___
Pdns-users mailing list
Pdns-users@mailman.powerdns.com
http://mailman.powerdns.com/mailman/listinfo/pdns-users