Skip to main content

Redis & nginx configuration for websocket/actionCable



Start redis server => redis-server
redis console => redis-cli

view available databases => config get databases

pubsub channels global*
pubsub channels global_notification_2
pubsub channels global_notification

pubsub channels * => Lists all the available channels
pubsub numsub global_notification_2 => returns the number of subscribers

From unix command line directly

redis-cli PUBSUB CHANNELS
redis-cli PUBSUB NUMSUB global_notification_2

[root@api prod-openmednet-api]# redis-cli PUBSUB CHANNELS
1) "_action_cable_internal"
2) "global_notification_2"

[root@api prod-openmednet-api]# redis-cli PUBSUB CHANNELS global_notification_2
1) "global_notification_2"

[root@api prod-openmednet-api]# redis-cli PUBSUB NUMSUB global_notification_2
1) "global_notification_2"
2) (integer) 2

NGINX configuration: 


worker_processes  auto;
worker_rlimit_nofile 500000;  #=> refer RLIMIT_NOFILE

server {
        error_log  logs/dev/error.log  warn;
        listen       80 default_server;
        server_name  devapi.openmednet.org;
        root         /home/rubyapps/OMNR5/OpenMedNet-R5/dev-openmednet-api/public;
        rails_env development;
        passenger_enabled on;
        if ($http_user_agent ~* LWP::Simple|BBBike|jorgee) {
          return 403;
        }
        access_log  logs/dev/host.dev.access.log  main;
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        location /cable {
            passenger_app_group_name omndevapi_action_cable;
            passenger_force_max_concurrent_requests_per_process 0;
        }
    }


setting RLIMIT_NOFILE
step: 1
vi /etc/security/limits.conf
add the following two lines at the end of the file 
* soft nofile 120000
* hard nofile 120000


mkdir  /etc/systemd/system/nginx.service.d
vi /etc/systemd/system/nginx.service.d/nofile_limit.conf

have the following two lines in that file 

[Service]
LimitNOFILE=500000

systemctl daemon-reload systemctl restart nginx.service

or simply set
setsebool -P httpd_setrlimit 1

And then have the following 3 lines of code @ /etc/sysctl.conf

net.core.somaxconn = 4096
fs.file-max = 120000
vm.overcommit_memory = 1

Then don't forget to restart the machine to apply the settings. AFter restart 
check "ulimit -n" it should match fs.file-max above 
this command too will match 
cat /proc/$(cat /opt/nginx/logs/nginx.pid)/limits | grep open.files


Comments

Popular posts from this blog

Errno::ENOENT: No such file or directory

HTML to PDF conversion is very easy in rails and pdfkit will be useful in this case, wkhtmltopdf tool will be supporting tool so you can easily convert an html to pdf.  In my experience I used the following steps: gem install pdfkit -v 0.5.0 gem install wkhtmltopdf -v 0.1.2 gem install wkhtmltopdf-binary Some times this sequence will not work, so I use the following as per the instruction from  https://github.com/pdfkit/pdfkit/wiki/Installing-WKHTMLTOPDF Be careful to download the appropriate wkhtmltopdf tar ball, it depends on your os architecture, like i386 or 64 wget http://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.9.9-static-amd64.tar.bz2 tar xvjf wkhtmltopdf-0.9.9-static-amd64.tar.bz2 mv wkhtmltopdf-amd64 /usr/local/bin/wkhtmltopdf chmod +x /usr/local/bin/wkhtmltopdf Try to convert html to pdf after restarting your web servers.  If you get any error like: Errno::ENOENT: No such file or directory then I have a straightforward method and

Rails 1.2.1 with Ruby 1.8.x installation tips

ROR Setup (Ruby 1.8.6 , patch level 111, rails 1.2.1, CentOs 6.2 62 bit, Postgres 8.3) Make sure rpmforge included in your yum.repo ‘s, you can make it is available through cd /tmp/ wget  http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm rpm --import  http://apt.sw.be/RPM-GPG-KEY.dag.txt rpm -K rpmforge-release-0.5.2-2.el6.rf.*.rpm rpm -i rpmforge-release-0.5.2-2.el6.rf.*.rpm Download and install ruby 1.8.6 cd /tm/ wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p111.tar.bz2 tar jxf ruby-1.8.6-p111.tar.bz2  cd ruby-1.8.6-p111 ./configure make Note: If you found any error like make gcc -g -O2  -DRUBY_EXPORT -D_GNU_SOURCE=1  -I. -I.  -c array.c gcc -g -O2  -DRUBY_EXPORT -D_GNU_SOURCE=1  -I. -I.  -c bignum.c gcc -g -O2  -DRUBY_EXPORT -D_GNU_SOURCE=1  -I. -I.  -c class.c gcc -g -O2  -DRUBY_EXPORT -D_GNU_SOURCE=1  -I. -I.  -c compar.c gcc -g -O2  -DRUBY_EXPORT -D_GNU_SOURCE=1  -I. -I.  -c dir.c