Linux C/C++ 开发(学习笔记十三):百万并发的服务器实现

简介: Linux C/C++ 开发(学习笔记十三):百万并发的服务器实现

准备内容

一、connection_refuesed ---->文件系统最大的进程fd个数

在那个文件下添加两行

reboot后即可

可以通过ulimit -a指令来查看文件系统最大的进程fd个数

确实由1024变为了百万级别

二、Cannot assign requested address-----> 在服务器开多个端口

连接到一半的时候又会遇到这个问题

在客户端这边,远程ip,远程端口,协议都是确定的,本机ip也是确定的,那么实际上就是本机的端口耗尽了。

解决方法就是 在服务器开多个端口,目前就开了一个端口:8888

解决过程

端口只有65535个,如何可以实现几百万并发呢。由于sockfd是五元组,而几百万并发是sockfd的数量

通过一个循环,开MAX_PORT个端口,每个为一个sockfd

并把每个sockfd加入到epoll中去

最后还需要用一个数组,将每次遇到的sockfd存入到数组后。(由于后续在监听到数据后,需要区分是listenfd还是客户端的信息)

后续while(1) 持续监听的时候,通过sockfds数组(理解为sockfd的集合)判断是listenfd还是clientfd就行了。

通过将MAX_PORT个io都放入到epoll中去管理

三、Connection time out----->设置当前系统设置最大连接数和防火墙对外的最大连接数

运行到后来,客户端还是会出现问题

可以看到64999非常接近65535这个数

接下来,来排查一下问题

通过命令来查看 系统所有进程一共可以打开的文件数量

结果很大,因此和最大可打开的文件数量没有关系

查看当前系统设置最大连接数

这是 内核里面设置的防火墙对外的最大连接数

因此需要设置参数,linux内核中的参数,都可以通过sysctl.conf来设置

修改后,通过下面这条命令进行生效

四、服务器 too many open files in system ----> 设置file_max

然后发现,服务器端,出现了问题,too many open files in system

发现服务器的file-max不够大

对服务器端的/etc/sysctl.conf 同样进行修改

通过sudo sysctl -p去更新

如果出现问题

需要 运行下列命令

然后再sudo sysctl -p去更新

五、内存不够----->调整TCP/IP协议栈 参数

在跑的时候查看htop,发现当一段时间后,fd个数不再增加了,

服务器停住了,因为内存满了,但是过一会又开始下降,说明是内存开始回收。

一旦开始对客户端大量进程结束,cpu的利用率会到达100%(而一般不能这么做,一般不能超过80%)

这时候就要调整 TCP/IP协议栈了

5242884k差不多为2G

1024字节
2*100w差不多为2G。(通过这种方式计算出来)

总的缓存=(每个fd发送缓存+每个fd接受缓存)*fd数量


如果想做到千万并发,就要用到用户态协议栈了

如果想提升客户端连接速度,可以将100个listenfd放入100个线程中去
把clientfd和listenfd放到不同的线程中

如果只利用一个端口8888,开多个进程


相关文章
|
6天前
|
关系型数据库 应用服务中间件 Linux
Linux云服务器如何搭建LNMP环境
LNMP环境是Linux系统中常用的Web服务架构,由Linux、Nginx、MySQL/MariaDB和PHP组成,适用于高效托管动态网站。本文以CentOS 7为例,详细介绍了LNMP环境的搭建步骤,包括Nginx、MariaDB和PHP的安装与配置,以及最终通过创建`index.php`文件验证环境是否成功部署。具体操作涵盖配置YUM仓库、安装服务、编辑配置文件、启动服务等关键步骤,确保用户能够顺利搭建并运行LNMP环境。
32 1
Linux云服务器如何搭建LNMP环境
|
2月前
|
安全 大数据 Linux
云上体验最佳的服务器操作系统 - Alibaba Cloud Linux | 飞天技术沙龙-CentOS 迁移替换专场
本次方案的主题是云上体验最佳的服务器操作系统 - Alibaba Cloud Linux ,从 Alibaba Cloud Linux 的产生背景、产品优势以及云上用户使用它享受的技术红利等方面详细进行了介绍。同时,通过国内某社交平台、某快递企业、某手机客户大数据业务 3 大案例,成功助力客户实现弹性扩容能力提升、性能提升、降本增效。 1. 背景介绍 2. 产品介绍 3. 案例分享
|
3月前
|
运维 监控 Linux
推荐几个不错的 Linux 服务器管理工具
推荐几个不错的 Linux 服务器管理工具
221 6
W9
|
4月前
|
运维 关系型数据库 MySQL
轻松管理Linux服务器的5个优秀管理面板
Websoft9 应用管理平台,github 2k star 开源软件,既有200+的优秀开源软件商店,一键安装。又有可视化的Linux管理面板,文件、数据库、ssl证书方便快捷管理。
W9
398 1
|
3月前
|
存储 Oracle 安全
服务器数据恢复—LINUX系统删除/格式化的数据恢复流程
Linux操作系统是世界上流行的操作系统之一,被广泛用于服务器、个人电脑、移动设备和嵌入式系统。Linux系统下数据被误删除或者误格式化的问题非常普遍。下面北亚企安数据恢复工程师简单聊一下基于linux的文件系统(EXT2/EXT3/EXT4/Reiserfs/Xfs) 下删除或者格式化的数据恢复流程和可行性。
|
SQL 消息中间件 弹性计算
从ECS到C++软件工程师
从ECS到C++软件工程师
217 0
从ECS到C++软件工程师
|
17天前
|
存储 机器学习/深度学习 人工智能
2025年阿里云GPU服务器租用价格、选型策略与应用场景详解
随着AI与高性能计算需求的增长,阿里云提供了多种GPU实例,如NVIDIA V100、A10、T4等,适配不同场景。2025年重点实例中,V100实例GN6v单月3830元起,适合大规模训练;A10实例GN7i单月3213.99元起,适用于混合负载。计费模式有按量付费和包年包月,后者成本更低。针对AI训练、图形渲染及轻量级推理等场景,推荐不同配置以优化成本和性能。阿里云还提供抢占式实例、ESSD云盘等资源优化策略,支持eRDMA网络加速和倚天ARM架构,助力企业在2025年实现智能计算的效率与成本最优平衡。 (该简介为原文内容的高度概括,符合要求的字符限制。)
|
18天前
|
存储 弹性计算 人工智能
2025年阿里云企业云服务器ECS选购与配置全攻略
本文介绍了阿里云服务器的核心配置选择方法论,涵盖算力需求分析、网络与存储设计、地域部署策略三大维度。针对不同业务场景,如初创企业官网和AI模型训练平台,提供了具体配置方案。同时,详细讲解了购买操作指南及长期运维优化建议,帮助用户快速实现业务上云并确保高效运行。访问阿里云官方资源聚合平台可获取更多最新产品动态和技术支持。
|
9天前
|
人工智能 负载均衡 数据可视化
阿里云出手了,DeepSeek服务器拒绝繁忙,免费部署DeepSeek模型671B满血版
阿里云推出免费部署DeepSeek模型671B满血版服务,通过百炼大模型平台,用户无需编码,最快5分钟、最低0元即可完成部署。平台提供100万免费Token,支持DeepSeek-R1和DeepSeek-V3等多款模型调用,有效解决服务器繁忙问题。新手零基础也能轻松上手,享受高效稳定的API调用和自动弹性扩展功能。教程涵盖开通服务、获取API-KEY及配置Chatbox客户端等步骤,详细指引助您快速实现DeepSeek自由。
98 18
|
4天前
|
Kubernetes 监控 Serverless
基于阿里云Serverless Kubernetes(ASK)的无服务器架构设计与实践
无服务器架构(Serverless Architecture)在云原生技术中备受关注,开发者只需专注于业务逻辑,无需管理服务器。阿里云Serverless Kubernetes(ASK)是基于Kubernetes的托管服务,提供极致弹性和按需付费能力。本文深入探讨如何使用ASK设计和实现无服务器架构,涵盖事件驱动、自动扩展、无状态设计、监控与日志及成本优化等方面,并通过图片处理服务案例展示具体实践,帮助构建高效可靠的无服务器应用。