Linux core parameters setting (not necessary for testing, must be done in an operation environment) Modify /etc/sysctl.conf, add the following lines:
fs.file-max = 600000 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_max_tw_buckets = 5000 net.ipv4.ip_local_port_range = 1024 61000 net.ipv4.tcp_rmem = 512 32768 262142 net.ipv4.tcp_wmem = 1024 32768 262142 net.core.netdev_max_backlog = 8096 net.core.rmem_default = 262144 net.core.wmem_default = 262144 net.core.rmem_max = 2097152 net.core.wmem_max = 2097152 net.ipv4.tcp_syncookies = 1
Save the file and execute “sysctl -p” command, which will need root authority. Please NOTE the parameter of fs.file-max, which means how many file handles can be opened globally. This number should be determined by expected persistent connections and server memory. The sample above is 600,000. Normally this figure needed to be set more than the wanted persistent connections number, as an example, if you’d like to maintain 500,000 persistent connections, it will be nice to set the number to 600,000.
Modify /etc/security/limits.conf, append the following:
USERNAME - nofile 600000
Change the first parameter parameter USERNAME to your username, keep the number here same with the fs.file-max parameter, 600,000 as example. Then logout and login remotely or restart Linux, and execute “ulimit -n”. If it shows 600,000, it means the configuration is working.
If the parameters are not set, when the persistent connections number exceeds a certain number, the system will show errors something like:
ulimit: open files: cannot modify limit: Operation not permitted
Too many open files in system
Extract Cobub Toaster PNS package to any directory, like /usr/local/ or /opt/ Modify configuration file toaster.conf. Some configurations are explained as following:
[base] # userMaxCount: this parameter is important, which is the max links number. If connections are more than this count, PNS server will return error "5000 server is busy" to client, the value here should be smaller than fs.file-max above. userMaxCount 500000 # bind: the network interface listened by PNS, with format of "IP:PORT". Please divide interfaces by "," if more than one. Usually it is enough to listen one network interface. tcp.bind 0.0.0.0:9000,0.0.0.0:9001 [web] # post body size limits, the default value is 10MB. You can set "1gb" if want 1GB. postlimit 10mb # bind: which network interface should be listened by Web Interface of PNS, format as IP:PORT. NOTE, "localhost" here should be replaced with their network address, like 192.168.xxx.xxx (it's recommended strongly that DON'T expose Web Interface to public network). It's also recommend to use Nginx as a reverse proxy, to avoid the garbage problem. bind 127.0.0.1:8888 [message] feedbackTimeout 20m # The max message expiration time is 720 hours (30 days) maxMsgExpire 720h [connection] #min heartbeat timeout, 1 minute min_heartbeart_timeout 1m #max heartbeat timeout, 20 minutes max_heartbeat_timeout 20m #If PNS doesn't receive the heartbeat during the interval of heartbeat+heartbeatDelay, it will treat the connection as dead link, and will close the connection, here set to 30 seconds. heartbeatDelay 30s [cobub_verify] #The two keys come form Cobub user center user_key 3e5f68afbb0f94xxx09bfc1730 user_secret 2d43d5dcdcb2yyyy3269dfb56b4b17
Redis Install & Configure
tar zxvf redis-2.6.16.tar.gz cd redis-2.6.16 make sudo make install cd ~ mkdir redis-6379 cd redis-6379 nohup redis-server &
Confirm that redis is already running before starting the server.
nohup ./toaster -log_dir="./log" &