Forum: NGINX How can I keep a large list in apache memory

Posted by ramprasad_ap (Guest)
on 2010-03-09 12:12
(Received via mailing list)
Hello all,

I am new to nginx , I am using ngnix as a Load balancer for two imap 
servers. All machines are RHEL5 64 bit

The nginx  calls an apache php script that determines if the user is on 
imap1 or imap2 by looking up a plain text file.
which contains entries like

$user['user1'] = 10.1.1.1;
$user['user2'] = 10.1.1.2;
----
$user=10.1.1.1;





For 15k users this method becomes very heavy. There are too many httpd 
processes running that suck the resources on the machine.

Is there a way I can load the userlist into memory in apache
Thanks
Ram

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?2,61798,61798#msg-61798
Posted by Markus Jelsma (Guest)
on 2010-03-09 12:39
(Received via mailing list)
Why not store the key/value pairs in memcache? This works like charm and 
using
Nginx' memc and eval modules you can retrieve the IP addresses from the 
cache
instantly.



On Tuesday 09 March 2010 12:12:06 ramprasad_ap wrote:
> $user['user2'] = 10.1.1.2;
> Is there a way I can load the userlist into memory in apache
> http://nginx.org/mailman/listinfo/nginx
> 

Markus Jelsma - Technisch Architect - Buyways BV
http://www.linkedin.com/in/markus17
050-8536620 / 06-50258350
Posted by ramprasad_ap (Guest)
on 2010-03-09 13:19
(Received via mailing list)
Can you give me an example how to store an array in memcache

I am quiet new to ngnix , Do I require any extramodules or is memcache 
always a part of nignx

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?2,61798,61812#msg-61812
Posted by Markus Jelsma (Guest)
on 2010-03-09 13:38
(Received via mailing list)
Storing data in memcache can be done from almost any language available. 
You
need to run a memcached server [1] somewhere and connect to it from some
program. Then you can simply set key/value pairs.

A PHP example:
$m = new Memcache('host');
$m->set('key', 'value');

If you set all your user/IP pairs in the cache, you can then retrieve 
them in
your Nginx config. Make sure you have the memc module compiled in. It 
would
also be a good idea to compile the eval module; with it, you can store 
the
value in a variable.

Then, using that value (the IP address), you can select your backend.

[1]: http://memcached.org/

On Tuesday 09 March 2010 13:19:04 ramprasad_ap wrote:
> nginx mailing list
> nginx@nginx.org
> http://nginx.org/mailman/listinfo/nginx
> 

Markus Jelsma - Technisch Architect - Buyways BV
http://www.linkedin.com/in/markus17
050-8536620 / 06-50258350
Posted by James Matthews (Guest)
on 2010-03-09 21:09
(Received via mailing list)
Is there a reason why you don't want to use a database?
Posted by Guillaume Filion (Guest)
on 2010-03-09 22:21
(Received via mailing list)
James Matthews a écrit :
> Is there a reason why you don't want to use a database?

Memchached is *very* fast, much faster than a database.

You should keep your data in a database and use a script to put it into
memcache every hour/day.
Posted by Cliff Wells (Guest)
on 2010-03-09 22:31
(Received via mailing list)
On Tue, 2010-03-09 at 12:08 -0800, James Matthews wrote:
> Is there a reason why you don't want to use a database?

memcached *is* a database.   It's a key/value store.   It's not a
*relational* database, but the OP's data isn't relational, it's
key/value pairs, which is exactly what memcached was designed to handle.

Regards,
Cliff
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.