Cobub Razor
Cobub Toaster
其它鏈接
linux 內核參數設置(做測試不需要設置, 只在正式環境中設置) 修改/etc/sysctl.conf, 加入以下幾行:
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
然后執行”sysctl -p”命令,需要root權限。 需要注意的是fs.file-max,這個是全局范圍內可以打開的文件句柄,視對長連接數量的需求以及服務器內存的大小而決定,樣例這里是60w,通常要比維持的長連接數量要多一些,比如需要維持50w的長連接,那么這個數量最好設置為60w。 修改/etc/security/limits.conf,在最后加入:
USERNAME - nofile 600000
第一參數USERNAME改為你的用戶名,600000與上面的fs.file-max設為相同的值。之后重新遠程登錄Linux或者重啟,重啟或者重新登錄之后輸入命令“ulimit -n”,如果顯示為600000則表示設置生效。 如果沒有設置這些參數, 當長連接超過一定數量時, 會拋出錯誤
ulimit: open files: cannot modify limit: Operation not permitted
或者
Too many open files in system
將 Cobub Toaster 的壓縮包解壓到任意目錄,建議解壓到 /usr/local/ 或 /opt/ 目錄下 然后修改配置文件 toaster.conf,重點解釋幾個值
[base] # userMaxCount: 這個參數比較關鍵, 這是允許最大的鏈接數量, 如果超過這個數量, 服務器會返回"5000 server is busy" 錯誤給客戶端, 這個值不能比上面設置的fs.file-max大。 userMaxCount 500000 # bind: 表示推送服務tcp監聽的網卡:端口, 用","分隔多個監聽, 通常場景下只需要監聽一個端口就足夠了 tcp.bind 0.0.0.0:9000,0.0.0.0:9001 [web] # post body 的大小限制, 默認為10M, 要表示為1g可以寫成"1gb" postlimit 10mb # bind: 這個參數表示web service監聽的網卡:端口, 注意, 這里的localhost應該要替換為自己的內網地址, 綁定內網的網卡. 如一般是192.168.xxx.xxx(不建議把web service暴露到公網)。建議使用Nginx作為反向代理,否則可能發生亂碼問題。 bind 127.0.0.1:8888 [message] feedbackTimeout 20m # 最大的消息過期時間為720小時(30天) maxMsgExpire 720h [connection] #最小心跳包間隔時間, 1分鐘 min_heartbeart_timeout 1m #最大心跳包間隔時間, 20分鐘 max_heartbeat_timeout 20m #在心跳包間隔+heartbeatDelay的時間內如果沒有接收到客戶端發來的心跳包, 那么server #會認為這是死鏈接, 會close掉這個鏈接, 此處設為30s heartbeatDelay 30s [cobub_verify] #這兩個key來自于Cobub 用戶中心 user_key 3e5f68afbb0f94xxx09bfc1730 user_secret 2d43d5dcdcb2yyyy3269dfb56b4b17
Redis 安裝&配置
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 &
注意啟動之前請確認redis已經在運行。
nohup ./toaster -log_dir="./log" &
./toaster -version