#举例scp -P2222 -r test_files root@1.1.1.1:/var/test这次上传的时间比平常用时多,想着可能是网络不好就断开又尝试了一遍,接下来服务器就完全没反应了,ssh和控制台提供的远程都登不上去。去云服务器控制台看了下发现磁盘io写满了,cpu干到了100%。本地断开了scp等了十多分钟还是这样,除了重启完全没招。后来检查了下本地要上传的文件夹,里面有.git仓库文件,好几万个小文件,比原本打算上传的文件不知道大了多少倍。原来就是这些小文件干爆了io。以后得多注意检查文件太多就不时候直接scp了,推荐zip打个包或者删掉无用的文件再上传。WRITING LOG · 03
技术博客
记录技术实践、问题排查和持续成长,把每一次解决问题的过程留下来。
WORKSPACE
文章阅读
记一次scp上传文件夹时把服务器io写爆的事故
2024-03-27
自从我把公司办公电脑换成linux系统以后习惯了用终端命令行工作,恰好要把本地文件夹上传到线上服务器就想着直接用scp命令。scp -P线上的端口号 -r 本地要上传的文件夹 线上服务器用户名@ip地址:/传到哪个路径
浏览器js处理json里面超大数字遇到的bug
2024-03-26
最近遇到个奇怪的bug,写管理后台的时候拿到后端的json里面一个编号死活查不到数据。刚开始以为是我php接口写的查询条件有问题。排查了下发现网页通过js取到这个编号后跟实际接口返回的编号是不同的,最后几位变成了0。这个编号是19位数的,尝试了一番发现如果不返回int整型的数据改为字符串型数字就没这个问题。看来是超大整型数字溢出了。
试了下nodejs里面也是这样,php本身没这个问题,只能说js坑挺多,只能多看多学。
试了下nodejs里面也是这样,php本身没这个问题,只能说js坑挺多,只能多看多学。
linux服务器高并发下socket连接数不够的问题
2024-03-20
游戏服务框架采用的skynet,最近投放后量起来了,原本8核16G的服务器却出现掉线创建不了新的socket连接的情况。看了上线人数也才几百人,CPU和内存都很平稳,只可能是服务器本身限制了socket连接数。
#查询了下tcp数才1000多 netstat -anp|grep tcp|wc -l #查看socket文件数限制,默认只有1024 ulimit -n #临时改为4096 ulimit -n 4096ulimit改完关闭ssh终端重新上去就还原了,这样改是临时改动。修改系统文件/etc/sysctl.confvi /etc/sysctl.conf#在里面加上配置net.ipv4.ip_local_port_range = 1024 65535net.core.rmem_max=16777216net.core.wmem_max=16777216net.ipv4.tcp_rmem=4096 87380 16777216net.ipv4.tcp_wmem=4096 65536 16777216net.ipv4.tcp_fin_timeout = 10net.ipv4.tcp_tw_recycle = 1net.ipv4.tcp_timestamps = 0net.ipv4.tcp_window_scaling = 0net.ipv4.tcp_sack = 0net.core.netdev_max_backlog = 30000net.ipv4.tcp_no_metrics_save=1net.core.somaxconn = 262144net.ipv4.tcp_syncookies = 0net.ipv4.tcp_max_orphans = 262144net.ipv4.tcp_max_syn_backlog = 262144net.ipv4.tcp_synack_retries = 2net.ipv4.tcp_syn_retries = 2#wq保存下#加载下配置/sbin/sysctl -p /etc/sysctl.conf#把文件限制放开命令直接写到终端加载自动执行ulimit -HSn 60000echo "ulimit -HSn 60000" >> /etc/rc.local即使是这样还是可能有问题,最好重启下服务,完成后能终于tcp socket能正常创建了。