分类 Linux 下的文章

Centos 6 change ulimit

vim /etc/security/limits.conf add at the bottom.

* soft nofile 102400
* hard nofile 102400

centos nodejs upgrade

# sudo model
# remove old
cd /etc/yum.repos.d/
rm nodesource-*.repo
yum remove nodejs
# install new
# change setup_8.x to your version
curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
yum clean all
yum -y install nodejs

比锐速还强的 TCP拥塞控制技术 —— TCP-BBR

BBR 是一个由谷歌社区开发的 TCP拥塞控制技术,目前处于开发初期,但是前景很棒,大家可以持续关注,同时BBR是集成与Linux最新版本的内核中的。

注意:TCP-BBR必须是 2016-12-05 21:00 更新的 4.9.0-rc8 内核及以后的版本 才能开启,而锐速并不支持这个最新的内核版本,所以TCP-BBR和锐速是不能共存的。

其实大多系统 update 就是最新内核了,但是一定要重启才能使新内核生效。

在 /etc/sysctl.conf 文件的末尾添加两行配置。其中第一行 default_qdisc 指的是默认的 TCP 队列算法,fq 是 Google 推荐的算法,更适用于 BBR。第二行则是在 IPv4 协议中开启拥塞控制算法。

echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf

// default 还原的话,移除上面加的两行,或者将它们改成下面两行
net.ipv4.tcp_congestion_control = cubic
net.core.default_qdisc = pfifo_fast

开启TCP BBR拥塞控制算法

nodejs error: socket hang up

socket hang up 的可能原因有很多,大多是服务器资源不足引起。

检查 ulimit -n (所有的 port process 资源受它限制)
sudo lsof -i|wc -l
检查 memory (内存耗尽也会出错)
free -m

新方案:
使用nginx做反向代理请求nodejs可以有效的减小甚至避免这个问题

location / {
  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection "upgrade";
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header X-NginX-Proxy true;
  proxy_set_header Host $http_host;
  
  proxy_pass http://127.0.0.0:8000; // nodejs server 
  proxy_redirect off;
}

案例:

memory error
ulimit error