Saturday, 19 January 2013

IBM WebSphere MQ 7.5 - Tuning up the Linux kernel

Following on from my earlier post: -

IBM WebSphere Message Broker 8.0.1 - Getting started

I've been experimenting with Linux kernel tuning, using the mqconfig tool: -


This is what mqconfig shows me ( run as user mqm ): -

$ ./mqconfig -v 7.5

mqconfig: V3.6 analyzing Red Hat Enterprise Linux Server release 6.3
          (Santiago) settings for WebSphere MQ V7.5

System V Semaphores
  semmsl     (sem:1)  250 semaphores                     IBM>=500          FAIL
  semmns     (sem:2)  17 of 256000 semaphores    (0%)    IBM>=256000       PASS
  semopm     (sem:3)  32 operations                      IBM>=250          
FAIL
  semmni     (sem:4)  7 of 2048 sets             (0%)    IBM>=1024         
PASS

System V Shared Memory
  shmmax              68719476736 bytes                  IBM>=268435456    
PASS
  shmmni              1 of 4096 sets             (0%)    IBM>=4096         
PASS
  shmall              107093 of 4294967296 pages (0%)    IBM>=2097152      
PASS

System Settings
  file-max            5728 of 792955 files       (0%)    IBM>=524288       
PASS
  tcp_keepalive_time  7200 seconds                       IBM<=300          
FAIL

Current User Limits (mqm)
  nofile       (-Hn)  20000 files                        IBM>=10240        
PASS
  nofile       (-Sn)  20000 files                        IBM>=10240        
PASS
  nproc        (-Hu)  10 of 62767 processes      (0%)    IBM>=4096         
PASS
  nproc        (-Su)  10 of 1024 processes       (0%)    IBM>=4096         
FAIL

Following the advice here: -


this is how I turned FAIL into PASS.

(a) For the System V Semaphores, I added the following line to /etc/sysctl.conf 

kernel.sem = 500 256000 250 1024

which has increased semmsl from 250 to 500 and increased semopm from 32 to 250.

(b) For the System Settings, I added the following two lines to /etc/sysctl.conf

fs.file-max = 524288
net.ipv4.tcp_keepalive_time = 300

(c) For the Current User Limits, I added the following lines to /etc/security/limits.conf 

mqm hard nproc 4096
mqm soft nproc 4096


In order to make the sysctl.conf changes permanent, I ran the following command ( as root ): -

$ sysctl -p

which returns: -


net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
kernel.sem = 500 256000 250 1024
fs.file-max = 524288
net.ipv4.tcp_keepalive_time = 300
In order to make the limits.conf changes permanent, I logged out of the mqm and then logged back in.

This time around, I get the following: -

$ ./mqconfig -v 7.5

mqconfig: V3.6 analyzing Red Hat Enterprise Linux Server release 6.3
          (Santiago) settings for WebSphere MQ V7.5

System V Semaphores
  semmsl     (sem:1)  500 semaphores                     IBM>=500          
PASS
  semmns     (sem:2)  17 of 256000 semaphores    (0%)    IBM>=256000       
PASS
  semopm     (sem:3)  250 operations                     IBM>=250          
PASS
  semmni     (sem:4)  7 of 1024 sets             (0%)    IBM>=1024         
PASS

System V Shared Memory
  shmmax              68719476736 bytes                  IBM>=268435456    
PASS
  shmmni              1 of 4096 sets             (0%)    IBM>=4096         
PASS
  shmall              107093 of 4294967296 pages (0%)    IBM>=2097152      
PASS

System Settings
  file-max            5792 of 524288 files       (1%)    IBM>=524288       
PASS
  tcp_keepalive_time  300 seconds                        IBM<=300          
PASS

Current User Limits (mqm)
  nofile       (-Hn)  20000 files                        IBM>=10240        
PASS
  nofile       (-Sn)  20000 files                        IBM>=10240        
PASS
  nproc        (-Hu)  10 of 4096 processes       (0%)    IBM>=4096         
PASS
  nproc        (-Su)  10 of 4096 processes       (0%)    IBM>=4096         PASS

2 comments:

Anonymous said...

Does reboot required for this ?

Dave Hay said...

@Snehal

It's not required in order to have mqconfig run to completion, but it's typically a good idea if you're changing kernel parameters.

So, for me, I'd reboot once I have made these changes, before going into production.

Regards, Dave

Note to self - use kubectl to query images in a pod or deployment

In both cases, we use JSON ... For a deployment, we can do this: - kubectl get deployment foobar --namespace snafu --output jsonpath="{...