nginx

一台机器最多能撑多少个TCP连接? 今天掰扯清楚!

こ雲淡風輕ζ 提交于 2020-12-04 10:51:58
在网络开发中,我发现有很多同学对一个基础问题始终是没有彻底搞明白。那就是一台机器最大究竟能支持多少个网络连接?我想我有必要单独发一篇文章来好好说一下这个问题。很多同学看到这个问题的第一反应是65535。原因是:“听说端口号最多有65535个,那长连接就最多保持65535个了”。是这样的吗?还有的人说是应该受TCP连接里四元组的空间大小限制,这样算起来就是非常非常大的一个数字了。这两个答案都对,也都不对。 其实要想把这个问题搞清楚,最最最关键的地方在于要把TCP连接的两端里的角色分清楚-客户端和服务器端。你手头的任何一台服务器,一般情况下都即是服务器,又是客户端。例如对于你的开发的后端接口,对于用户来说你是服务器端。但你得请求Redis、Mysql去获取数据,这时候又变成了客户端。如果不把这台机器作为客户端和服务器端两种角色拆开来理解,你将永远被这个问题困惑下去。 所以本文分别从客户端、服务端两块来展开聊聊。 客户端 现在我们单独来说客户端,当一台机器作为客户端的时候,究竟能支持多少个TCP连接? 空嘴说没有啥意思,我们直接用代码来试试。 1.小试牛刀 开始实验之前我们先来check下手头机器上的端口数量的配置 $ sysctl -a | grep ip_local_port_range net.ipv4.ip_local_port_range = 15000 65000

一次凶险的运维经历

爷,独闯天下 提交于 2020-12-04 10:16:32
单服务器,centos 5.8,虽然觉得不太可能中马或者什么的,但怕硬盘同时坏啊, 于是NC的决定出线了,用dd命令, dd if=/dev/sda of=/var/bak/image 然后,下班 第二天,同事A,咋了,网页打不开,服务器出毛病了? 我说不可能吧,然后居然打不开,C同事说,我能开,刷了一下完蛋了.不行 我上服务器telnet localhost 80, 有回应 本地telnet80端口,不行telnet shell好好的.. 难道被封了,赶紧的,把nat改成1025映射80 不行,这下确定是服务器问题了. reboot服务器,其实不太愿意的,但是用了别人的shell安的nginx,log文件不知道藏到哪儿了,脚本一时半会儿又找不到急啊,重启后居然能访问了,但是提示数据库不能连接错误... 上去看了下,mysql居然没启动, 为什么,就没去考虑了,直接server mysql restart stop是filed start 一直是...启动过程中,就是开不了, 干,这下急了,不是说启动不了的问题,而是是mysql和系统的log都没报错, 我跟同事说,不管了,我重新编译,你们等半小时,我对4核的系统速度还是很肯定的, wget...下了10来M的时候懵了,系统空间不足, 干净DF 我擦,满了,猛然想起是dd了硬盘,ls看了下大小 跟硬盘差不多大 rm -fr 删掉

面试字节跳动,被怼的体无完肤!

試著忘記壹切 提交于 2020-12-04 08:15:45
作者:知乎三级狗 来源:http://mrw.so/56CkE0 人们都说,这个世 d2f见*( 界上有 d2f见*( 两种 d2f见*( 人注定 d2f见*( 单身,一种是 d2f见*( 太优秀的,另一种 d2f见*( 是太平 d2f见*( 凡的。 我一听呀?那我这 d2f见*( 岂不是 d2f见*( 就不 d2f见*( 优秀了吗,于是毅 d2f见*( 然决然 d2f见*( 和女 d2f见*( 朋友分 d2f见*( 了手。 人们都说,互联网 d2f见*( 寒冬来了,这个时 d2f见*( 候还在 d2f见*( 大面 d2f见*( 积招人 d2f见*( 的公司,必然是 d2f见*( 牛逼的 d2f见*( 公司。而这个 d2f见*( 时候勇 d2f见*( 敢跳 d2f见*( 槽的人,必然是 d2f见*( 牛逼的人。 于是我 d2f见*( 开始了 d2f见*( 字节 d2f见*( 跳动的 d2f见*( 社招 d2f见*( 面试。 为了这天,我前一 d2f见*( 天排老 d2f见*( 长的 d2f见*( 队理了 d2f见*( 个利 d2f见*( 落的发型,胡子刮 d2f见*( 得一干 d2f见*( 二净。穿上崭 d2f见*( 新的新 d2f见*( 百伦999,连袜子 d2f见*( 都是崭 d2f见*( 新的NB,墨绿色 d2f见*( 工装裤 d2f见*( 配酒 d2f见*( 红色卫衣

Django服务器布置(Ubuntu+uwsgi+nginx+Django)

喜你入骨 提交于 2020-12-04 08:14:42
一、安装Python   apt install python3 二、安装pip   apt install python3-pip 三、创建目录   创建虚拟服务目录     mkdir -p /data/env    创建项目目录     mkdir -p /data/wwwroot 四、将项目复制到项目目录 五、安装虚拟环境   pip install virtualenv     虚拟环境下安装Django,并测试服务       pip install django       python manage.py runserver     指定Python版本,并创建pyweb的虚拟环境       cd /data/env       virtualenv -p /user/bin/python3 pyweb 六、安装uwsgi   虚拟环境下安装     pip install uwsgi   非虚拟环境下安装     pip3 install uwsgi 七、在项目目录下创建web.xml文件   < uwsgi > < socket > 127.0.0.1:8997 </ socket > <!-- 内部端口,自定义 --> < chdir > /data/wwwroot/mysite/ </ chdir > <!-- 项目路径 --> < module >

Unable to access Spring Boot microservice exposed via nginx ingress controller on Kubernetes cluster running on AWS

给你一囗甜甜゛ 提交于 2020-12-04 07:57:01
问题 I have spun up a 3 node Kubernetes cluster (version: 1.5.8) on AWS using the kube-up.sh script following this walkthrough: https://ryaneschinger.com/blog/building-a-kubernetes-cluster-on-aws/ I'm able to successfully access the cluster and view the UI. Output of kubectl cluster-info command: I wrote a simple Spring Boot microservice: @RestController public class AddCustomerController { private static final String template = "Customer %s is added."; @RequestMapping("/addcustomer") public

Unable to access Spring Boot microservice exposed via nginx ingress controller on Kubernetes cluster running on AWS

瘦欲@ 提交于 2020-12-04 07:56:53
问题 I have spun up a 3 node Kubernetes cluster (version: 1.5.8) on AWS using the kube-up.sh script following this walkthrough: https://ryaneschinger.com/blog/building-a-kubernetes-cluster-on-aws/ I'm able to successfully access the cluster and view the UI. Output of kubectl cluster-info command: I wrote a simple Spring Boot microservice: @RestController public class AddCustomerController { private static final String template = "Customer %s is added."; @RequestMapping("/addcustomer") public

Nginx基于IP,端口,域名配置虚拟主机

微笑、不失礼 提交于 2020-12-04 06:17:51
一、什么是虚拟主机 虚拟主机是使用特殊的软硬件技术,把一台真实的物理服务器主机分割成多个逻辑存储单元。每个逻辑单元都没有物理实体,但是每一个逻辑单元都能像真实的物理主机一样在网络上工作,具有单独的IP地址(或共享的IP地址)、独立的域名以及完整的Internet服务器(支持WWW、FTP、E-mail等)功能。 虚拟主机的关键技术在于,即使在同一台硬件、同一个操作系统上,运行着为多个用户打开的不同的服务器程式,也互不干扰。而各个用户拥有自己的一部分系统资源(IP地址、文档存储空间、内存、CPU等)。各个虚拟主机之间完全独立,在外界看来,每一台虚拟主机和一台单独的主机的表现完全相同。所以这种被虚拟化的逻辑主机被形象地称为“虚拟主机”。 二、基于端口的虚拟主机 1、准备环境 #当前环境 # more /etc/issue Red Hat Enterprise Linux Server release 6.3 (Santiago) Kernel \r on an \m # uname -rm 2.6.32-279.el6.x86_64 x86_64 # nginx -v nginx version: nginx/1.8.0 # 创建3个目录用于存放不同形式虚拟主机index.html文件 # mkdir -p /website/baseport # mkdir -p /website

kubernetes statefulset

╄→尐↘猪︶ㄣ 提交于 2020-12-04 02:32:56
概述 在应用程序中我们有两类,一种是有状态一种是无状态。此前一直演示的是deployment管理的应用,比如nginx或者我们自己定义的myapp它们都属于无状态应用。 而对于有状态应用,比如redis,mysql,还有etcd,还有zookeeper等等需要存数据的都属于有状态。它们不光有所谓的节点之分,每一个对应的pod还有角色之分,有的是主节点,有的是从节点。而后,从节点不光有所谓的从之分可能还有先后次序之分,我们不同的分布式系统它们的运维管理,逻辑和运维操作过程是不相同的,因此没有办法把一种控制器把每一种功能都同步进来让我们非常简单的去操作这些有状态的应用,几乎没有任何控制器能做到,后来即便有了 statefulset我们去用其实现真正功能控制时也是极其麻烦的。所以我们说statefulset即便在应用程度上能在一定程度上能实现有状态应用的管理效果,但我们需要自行把我们对某个应用的运维管理过程写成脚本注入到statefulset的应用文件中才能使用,但是稍有不慎就会有问题。好在k8s支持所谓叫做TPR,后来改成CRD了(第三方资源或自定义资源)这种机制,甚至于还支持其它更为复杂的机制比如叫api聚合,当我们使用api聚合时就需要自己去修改k8s源代码增强我们自己所需要功能,对大多数人来讲这是不可能的任务,因为它是使用GO语言开发的

nginx 端口转发 (proxy_pass反向代理)

爱⌒轻易说出口 提交于 2020-12-04 01:43:00
第一种(访问IP转发到IP+端口) server{ listen 9003 ; server_name 192.168 . 1.114 ; index index.php index.html index.htm; location / { proxy_pass http: // 127.0.0.1:9002; } } 当访问192.168.1.114:9003 的时候, 就会转发到192.168.1.114的9002端口, 9002端口我配置的是PHPinfo(); 所以最终会显示PHPinfo的信息. 第二种(访问域名转发到IP+端口去) server{ listen 80 ; server_name www.test1.top; index index.php index.html index.htm; location / { proxy_pass http: // 127.0.0.1; } } #这里有个奇怪的问题, 域名我使用test1.top就403, 完全搞不懂为什么, 加上www 就正常了, 有待解决 访问www.test1.top 转发到192.168.1.114默认的nginx显示的页面, 同样可以加上端口比如: http://127.0.0.1:9002; 就跳转到PHPinfo页面 第三种(访问IP转发到域名) server{ listen 9003 ;

ELKStack之极速入门(上)

Deadly 提交于 2020-12-04 01:42:44
#ELKStack之极速入门(上) 链接: https://pan.baidu.com/s/1V2aYpB86ZzxL21Hf-AF1rA 提取码:7izv 复制这段内容后打开百度网盘手机App,操作更方便哦 ##1. EKL介绍 ###1.1 需求背景 一般我们需要进行日志分析场景:直接在日志文件中 grep、awk 就可以获得自己想要的信息。但在规模较大的场景中,此方法效率低下,面临问题包括日志量太大如何归档、文本搜索太慢怎么办、如何多维度查询。需要集中化的日志管理,所有服务器上的日志收集汇总。常见解决思路是建立集中式日志收集系统,将所有节点上的日志统一收集,管理,访问。 一般大型系统是一个分布式部署的架构,不同的服务模块部署在不同的服务器上,问题 出现时,大部分情况需要根据问题暴露的关键信息,定位到具体的服务器和服务模块, 构建一套集中式日志系统,可以提高定位问题的效率。 一个完整的集中式日志系统,需要包含以下几个主要特点: (1)收集-能够采集多种来源的日志数据 (2)传输-能够稳定的把日志数据传输到中央系统 (3)存储-如何存储日志数据 (4)分析-可以支持 UI 分析 (5)警告-能够提供错误报告,监控机制 ELK提供了一整套解决方案,并且都是开源软件,之间互相配合使用,完美衔接,高效的 满足了很多场合的应用。目前主流的一种日志系统。 ###1.2 ELKStack介绍