ip_conntrack problem with memcached

NTPT NTPT at seznam.cz
Mon Nov 13 09:30:32 UTC 2006


This is because kernel try to track  all your memcached connections - ie watch all tcp/ip connection that you made to your memcache. and because conntrack table have a limited size ,  and it must hold a connection information for relative long time, when this table get overloaded, packets are dropped . 


there are general tree possible solutions 

1: Do not use Ip_conntrack feature of the kernel . ie if you do not need to perform a nat or some fancy packet mangling, SPI or something on your box,   do not load (modporbe or  insmod ) ip_conntrack module to the kernal .

2: Increase a size of the conntrack table like this 

echo "yoursize" > /proc/sys/net/ipv4/ip_conntrack_max 

where "yoursize"  is a  number of tcp/ip connections to be tracked. something about 32000 - 128000.   Work well, but eat up memory and CPU time, with is a big disadvantage on busy sites  (and if you get conntrack_table full message, you are a busy site  ) because it lower the amounth of available memory for memchached too.


3: Compile your kernel   in netfilter section  with "RAW table" support and "NOTRACK"  target for iptables. With this feature you can (via  iptables ) easily disable connection tracking for connection to memchached  while leaving other connection tracking mechanism for nat, spi  and other etc. so you box can do a nat., púacket mangling or SPI , but ip conntrack mechanism in kernal wil not be burdened with memcached related traffic.  For future detail consult iptables manual 
   
the command wil be something like this  (without warranty - for detail man iptables)

iptables -t raw -I PREROUTING -i interface to  your memchached clients -s ip_addrsss of your memcached clients -d ip_address of your memcached server --dport port of your memcached daemon  -j NOTRACK 

iptables -t raw -I OUTPUT -i interface to  your memchached clients -s ip_addrsss of your memcached box --sport port of your memcached daemon   -j NOTRACK 

first rule is for not track incoming traffic to memcached , second is for not tracking of outgoing traffic from memcached. 


Note thad disablink connection tracking for memcached generated trafic may be generally a very good idea because conntrac mechanism of the kernal eat up memory and cpu time and may be it can improve overall performance of memcached over tcp/ip . real benchmark needed .

















>  ------------ Původní zpráva ------------
>  Od: Hansflug (at) freenet <hansflug at freenet.de>
>  Předmět: ip_conntrack problem with memcached
>  Datum: 13.11.2006 09:39:10
>  ----------------------------------------
>  Hello,
>  
>  i have a Problem with my Connection to memcached.
>  in peaktime the kernel log show that i have a ip_conntrack problem ?
>  i use php5 and memcachelib for save db results. 
>  
>  What tuning i can do for my problem  ????
>  
>  here information about my memcache daemon.....
>  the server no swapping or have no high load. but i have many
>  connections !!
>  
>  server:
>  2 CPU but memcache use only one....
>  2GB RAM
>  load average: 0.08, 0.09, 0.09
>  Cpu(s):  1.3% us,  2.5% sy,  0.0% ni, 94.3% id,  0.0% wa,  0.3% hi,
>  1.5% si
>  Mem:   2077052k total,  1943424k used,   133628k free,   100344k buffers
>  Swap:  3148720k total,        0k used,  3148720k free,   285896k cached
>  
>  
>  kernel.log
>  
>  kernel: ip_conntrack: table full, dropping packet.
>  last message repeated 9 times
>  kernel: printk: 3815 messages suppressed.
>  ...................
>  ./memcached-tool localhost:11516 display
>   6         B      0 s       0     yes
>    7         B      0 s       0     yes
>    8     256 B  44405 s       8     yes
>    9     512 B  48126 s      12     yes
>   10      1 kB  51820 s       1     yes
>   11      2 kB  38461 s     130     yes
>   12      4 kB  42341 s     117     yes
>   13      8 kB  39478 s     229     yes
>   14     16 kB  59783 s       2     yes
>   15     32 kB 833888 s       1      no
>   16         B      0 s       0     yes
>   17         B      0 s       0     yes
>  
>  startparameter
>  /usr/bin/memcached -m 500 -p 11516 -u root -c 4500
>  
>  statsinfo
>  telnet localhost 11516
>  Trying 127.0.0.1...
>  Connected to localhost.
>  Escape character is '^]'.
>  stats
>  STAT pid 9639
>  STAT uptime 1532210
>  STAT time 1163406727
>  STAT version 1.1.12
>  STAT rusage_user 16376.415406
>  STAT rusage_system 28586.777149
>  STAT curr_items 184292
>  STAT total_items 125758879
>  STAT bytes 343284616
>  STAT curr_connections 547
>  STAT total_connections 43200011
>  STAT connection_structures 3253
>  STAT cmd_get 346041673
>  STAT cmd_set 125758879
>  STAT get_hits 304561195
>  STAT get_misses 41480478
>  STAT bytes_read 90234189974
>  STAT bytes_written 402886887964
>  STAT limit_maxbytes 524288000
>  
>  
>  
>  
>  
>  


More information about the memcached mailing list