linux上TCP connection timeout的原因查找 好久没有写文章了, 今天解决了一个网络连接超时的问题, 记录以备查看. 最近在线上nginx经常出现输出connection timeout的日志,如下格式:2016/03/17 15:33:01 [error] 32356#0: *102974264722 no live upstreams while connecting to upstream, client: 123.151.42.*, server: localhos…
Linux作为一个强大的操作系统,提供了一系列内核参数供我们进行调优.光TCP的调优参数就有50多个.在和线上问题斗智斗勇的过程中,笔者积累了一些在内网环境应该进行调优的参数.在此分享出来,希望对大家有所帮助. 调优清单 好了,在这里先列出调优清单.请记住,这里只是笔者在内网进行TCP内核参数调优的经验,仅供参考.同时,笔者还会在余下的博客里面详细解释了为什么要进行这些调优! 序号 内核参数 值 备注 1.1 /proc/sys/net/ipv4/tcp_max_syn_backlog 2048…
从linux源码看socket(tcp)的timeout 前言 网络编程中超时时间是一个重要但又容易被忽略的问题,对其的设置需要仔细斟酌.在经历了数次物理机宕机之后,笔者详细的考察了在网络编程(tcp)中的各种超时设置,于是就有了本篇博文.本文大部分讨论的是socket设置为block的情况,即setNonblock(false),仅在最后提及了nonblock socket(本文基于linux 2.6.32-431内核). connectTimeout 在讨论connectTimeout之前,…
导言:本篇作为理论基础,将向我们讲述TCP/IP的基本原理以及重要的协议细节,并在此基础上介绍了TCP/IP在LINUX上的实现. OSI参考模型及TCP/IP参考模型 OSI模型(open system interconnection reference model)是基于国际标准化组织(ISO)的建议而发展起来的,它分为如图3-1所示的七层.当卫星和无线网络出现以后,现有的协议在和这些网络互联时出现了问题,所以需要一种新的参考体系结构,能无缝地连接多个网络.这个体系结构就是TCP/IP参考模…
最近遇到了一个很奇葩的问题,我编写了一个.net core程序读取多个数据库数据源,进行数据同步处理.该程序在windows环境下运行完全正常,但在linux环境下运行报异常,提示 System.Data.SqlClient.SqlException: Connection Timeout Expired. The timeout period elapsed during the post-login phase. 更奇葩的地方在于在linux环境下,两个数据库,一个读取正常,一个读取异常.我…
前言 Linux上提供了两款工具用于查找文件,一款是locate,另一款是find. locate的特点是根据已生成的数据库查找,速度较快,但是查找的是快照数据,不准确. 因此在日常使用中,为了准确性,使用find的情况比较常见.并且find可自定义查找条件,十分灵活. locate Linux上有一个RPM包,名为mlocate,它是locate/updatedb的一种实现. mlocate前面的m代表的意思是merging,它表示updatedb会重复使用已存在的数据库,从而避免读取整个文件…
拥抱.net core的过程中, 将公司的一套java项目改成了.net core 2.0版的. 里面的tcp服务被我用msdn的SocketAsyncEventArgs方式重写了, 然而在测试的过程中发现, 偶尔会出现重启无法再次绑定监听的情况. 因为缺乏linux上编程的经验, 对linux的认识过于粗浅, 仅凭现有的知识第一反应是, 是不是在asp.net core的结束时没有清理干净, 也不是呀, 在lifetime中记录了日志都清楚地打印了. 打开搜索引擎, 搜linux下socket…
时至今日,字符串使用unicode已经是不需要理由的常识,但对一些有着悠久历史的编程语言来说,这仍然是个头痛的问题.如果抛开第三方库的支持,C++其实并不能实际有效地支持unicode,即使是utf8.(注:本文讨论的是字符串在内存中的编码方案,而不是文件或网络数据流.) STL的string模板诞生时,unicode还是理想中的固定16位编码.那时,Windows.Java等先后跨跃进unicode时代,而Unix/Linux受限于向后兼容而难以改变.那时Windows上的C++编程主要用用W…
本文于2019年04月10日将标题「CentOS7 部署 ASP.NET Core应用程序」修改为「使用 Nginx 在 Linux 上托管 ASP.NET Core 应用程序」. 环境准备 VMware Workstation 14 Pro 官方下载 CentOS 7 Minimal 官方下载 虚拟机安装.系统镜像配置过程,大家参考网上教程应该没啥问题,我这不再赘述. 成功安装并登陆 CentOS 7 Minimal 系统后,发现无法上网,后来搜索找到原因:CentOS 7 Minimal 默…
不要在linux上启用net.ipv4.tcp_tw_recycle参数 发布于 2015/07/27 莿鸟栖草堂 本文为翻译英文BLOG<Coping with the TCP TIME-WAIT state on busy Linux servers>,但并非完整的翻译,译者CFC4N对原文理解后,进行了调整,增加了相关论点论据,跟原文稍有不同.翻译的目的,是为了加深自己知识点的记忆,以及分享给其他朋友,或许对他们也有帮助.文章比较长,没耐心请点关闭. 不要启用 net.ipv4.tcp_…