记一次docker部署web服务性能瓶颈解决过程

Docker容器的优化和性能调优技巧 Docker容器的优化和性能调优是确保容器在生产环境中高效运行的重要步骤。通过选择轻量的基础镜像、减少不必要的层、使用多阶段构建、限制容器资源、启用缓存和镜像分层、使用Docker Compose、监控和日志记录、自动化部署、清理无用资源、使用容器编排工具、使用高性能存储驱动程序、预热容器、性能监控和调优工具等策略,可以提高容器的性能、可靠性和效率。希望本文的示例代码和指南对大家有所帮助。 阅读详情

安利一篇我翻译的国外大牛的神经网络入门文章

在云计算领域,采用容器部署web服务越来越普遍,具有部署速度快,动态伸缩简单的特点。
最近参与了一次公司采用docker容器技术部署web服务的一次实践,在压测过程遇到了一个性能问题,记录下来作为以后开发的一个积累。

问题描述

测试环境

单台物理机,24核,120G内存

部署场景

采用docker容器,容器内部跑web应用。

压测过程

并发500访问。
1.启动一个容器,进行压测
2.启动四个容器,进行压测

问题现象

单容器场景下,没发现问题,跟物理部署单tomcat场景比,tps接近(均达到了17k)。
四个容器的场景下,发现tps只到23k,并且cpu占用只在50%左右。
后来我们把容器数量加到6个,发现依然没有改善,tps并没有上升。cpu占用率也没有提升。

问题分析

这个场景下很显然是有资源在cpu之前先到达了瓶颈。从而导致即使增加容器实例部署,也无法使cpu利用率上升。但通过对内存,network-io,disk-io监控,都没有发现有瓶颈出现,并且看了tomcat的线程数,即使全达到最大,也不会超出物理机的线程数限制。而在另外一个物理机上,这个tomcat的配置,4个实例是几乎可以将cpu打满。

问题定位解决过程

因为单容器时候没发现问题,因此我们重点怀疑是物理机的配置导致的。因此在我们这个启动容器的物理机上也部署了4个tomcat实例,压测发现果然跟4个容器一样,cpu无法打满,tps上不去。
这时候开发人员给了一个提示,怀疑是有cpu的软中断处理不过来了。
于是在又一次的压测过程,采用下面的命令进行监控

mpstat -P ALL 1

果然发现有个别cpu一直处于忙碌当中(idel列一直为0)
于是开发怀疑是物理的RPS没开,后来设置RPS之后就好了。

关于RPS/RFS的一些理解

参考
http://blog.youkuaiyun.com/yy405145590/article/details/9837839
http://www.linuxidc.com/Linux/2015-07/119424.htm

  • RPS全称是 Receive Packet Steering, 这是Google工程师 Tom Herbert (therbert@google.com )提交的内核补丁, 在2.6.35进入Linux内核. 这个patch采用软件模拟的方式,实现了多队列网卡所提供的功能,分散了在多CPU系统上数据接收时的负载, 把软中断分到各个CPU处理,而不需要硬件支持,大大提高了网络性能。
  • RFS 全称是 Receive Flow Steering, 这也是Tom提交的内核补丁,它是用来配合RPS补丁使用的,是RPS补丁的扩展补丁,它把接收的数据包送达应用所在的CPU上,提高cache的命中率。
  • 这两个补丁往往都是一起设置,来达到最好的优化效果, 主要是针对单队列网卡多CPU环境(多队列多重中断的网卡也可以使用该补丁的功能,但多队列多重中断网卡有更好的选择:SMP IRQ affinity)
简单原理

RPS实现了数据流的hash归类,并把软中断的负载均衡分到各个cpu,实现了类似多队列网卡的功能。由于RPS只是单纯的把同一流的数据包分发给同一个CPU核来处理了,但是有可能出现这样的情况,即给该数据流分发的CPU核和执行处理该数据流的应用程序的CPU核不是同一个:数据包均衡到不同的cpu,这个时候如果应用程序所在的cpu和软中断处理的cpu不是同一个,此时对于cpu cache的影响会很大。那么RFS补丁就是用来确保应用程序处理的cpu跟软中断处理的cpu是同一个,这样就充分利用cpu的cache。

  • 应用RPS之前: 所有数据流被分到某个CPU, 多CPU没有被合理利用, 造成瓶颈
  • 应用RPS之后: 同一流的数据包被分到同个CPU核来处理,但可能出现cpu cache迁跃
  • 应用RPS+RFS之后: 同一流的数据包被分到应用所在的CPU核
必要条件

使用RPS和RFS功能,需要有大于等于2.6.35版本的Linux kernel
看完支付宝扫个红包吧 😃

CS1237与STM32通信避坑指南:非标准SPI时序与数据稳定方案 在嵌入式高精度数据采集领域,24位ADC与MCU的通信稳定性直接影响测量精度。CS1237作为一款低成本、内置PGA的24位模数转换芯片,其通信协议并非标准SPI,而是两线制同步串行接口,对时序要求极为严格。若直接套用STM32硬件SPI外设,极易因时钟极性、空闲电平及数据帧长度不匹配导致数据错位或乱跳。理解其自定义协议原理,采用GPIO模拟时序并精确控制SCLK空闲高电平、24位数据帧及符号扩展,是保证数据可靠的关键。该方案广泛应用于电子秤、压力变送器等小信号采集场景,通过硬件滤波与软件滑动平均、中值滤波 阅读详情

相关推荐

Docker+Redis单机和集群部署【非常详细】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。

youmiqianyue的博客 2133

优化 docker 容器性能慢问题

D:\mydata\tomcat\webapps:/usr/local/tomcat/webapps # 指定对应的数据卷。我这边使用的是文件挂载。部署环境下tomcat容器启动缓慢,耗时10多分钟,性能较差,同时后端服务响应较慢。结果中看了一看出cpu、内存使用情况都不高,但是system:中in、CS 较高。考虑war解压不会占用过多的磁盘空间,直接不使用挂载,将jar包部署到容器内。性能是直线飙升,原先部署时间要10多分钟,现在2分钟内搞定。对比结果CPU、内存使用率都不高。

li371490890的博客 5817

Linux运维实战:Docker部署Zabbix监控MySQL与Nginx服务

如果你对Linux运维工程师这个岗位感兴趣,但又觉得技术栈庞杂、无从下手,这篇文章就是为你准备的。我们直接切入核心,不谈空泛概念,重点解决“一个合格的Linux运维工程师需要掌握哪些技能”以及“如何从零开始,一步步搭建并验证一个企业级运维技术栈”这两个实际问题。 本文将以一个典型的Web服务监控场景为线索,串联起 Linux操作系统基础、Docker容器化部署、MySQL数据库管理、Nginx Web服务配置以及Zabbix监控系统 这五大核心技能模块。我们的目标不是浅尝辄止,而是通过一个可复现的实战项目,

weixin_34337381的博客 440

Docker 容器常见故障排查及处理

Docker 容器常见故障排查及处理 本文来源于公司论坛发表的帖子 Docker是一种相对使用较简单的容器,我们可以通过以下几种方式获取信息: 1、通过docker run执行命令,或许返回信息 2、通过docker logs 去获取日志,做有针对性的筛选 3、通过systemctl status docker查看docker服务状态 4、通过journalctl -u docker.service 查看日志 以下是整理的docker容器类问题故障,分为9个类 一、启动类故障 1、docker:

Ice-winters 2万+

NAS部署饥荒联机版服务器:Docker资源隔离与Web管理实战

容器化技术通过将应用及其依赖打包成标准单元,实现了环境隔离与资源控制,其核心原理在于利用操作系统级虚拟化技术,为每个容器提供独立的运行空间。在游戏服务器部署场景中,Docker容器化技术能有效解决环境配置复杂、依赖冲突等问题,显著提升部署效率和可维护性。通过配置CPU与内存的资源限制(limits)与预留(reservations),可以保障关键应用获得稳定的计算资源,避免因宿主机资源争抢导致的性能波动,这对于《饥荒联机版》这类对单核CPU性能敏感的服务端尤为重要。结合Web管理页面,可以实现对游戏服务器配

weixin_32932149的博客 336

Docker性能优化:提升容器运行效率

1. 背景介绍 1.1 什么是Docker Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

AI天才研究院 682

解锁高性能Web应用:Gunicorn、Flask与Docker的高并发部署秘籍

在当今的互联网时代,高并发Web应用已成为许多企业的核心需求。本文将带你深入探讨如何利用Gunicorn、Flask和Docker,实现高性能、高并发的Web应用部署。通过本文的介绍,相信你已经掌握了如何利用Gunicorn、Flask和Docker实现高性能、高并发的Web应用部署。在高并发环境中,我们需要处理大量的并发请求,确保应用的稳定性和性能。Gunicorn可以通过命令行参数和配置文件进行配置。负载均衡可以有效分散请求压力,多容器部署则能提高应用的可扩展性和容错能力。文件,并将上述代码粘贴进去。

u012901740的博客 1357

MySQL数据库的性能瓶颈分析与解决

在当今数字化时代,数据量呈爆炸式增长,MySQL作为一款广泛使用的开源关系型数据库管理系统,被大量应用于各种Web应用、企业级系统等。然而,随着数据量的增加和业务的复杂化,MySQL数据库的性能问题逐渐凸显,如查询响应时间过长、系统吞吐量下降等。本文章的目的就是全面分析MySQL数据库可能出现的性能瓶颈,并提供相应的解决方法,范围涵盖了从数据库架构设计、查询优化、索引优化到服务器配置等多个方面。本文将按照以下结构展开:首先介绍MySQL数据库性能相关的核心概念和它们之间的联系,为后续的分析奠定基础;

2502_91592937的博客 1105

Kamal性能分析:找出部署瓶颈的实用工具

在现代Web应用开发中,部署流程的效率直接影响开发团队的迭代速度和用户体验。Kamal作为一款强大的部署工具,虽然简化了应用的部署流程,但在面对复杂应用或大规模部署时,性能瓶颈仍然可能出现。本文将深入探讨如何系统地分析Kamal部署过程中的性能问题,识别关键瓶颈,并提供实用的优化策略。 ## 理解Kamal部署流程 Kamal的部署流程涉及多个关键阶段,每个阶段都可能成为性能瓶颈。以下是典型的...

gitblog_00698的博客 292

UE5高斯泼溅落地全链路:从PLY导入到实时渲染的工程实践

3D高斯泼溅(3D Gaussian Splatting)正从NeRF后处理技术演进为新一代隐式几何渲染范式,其核心在于以可微椭球体替代传统三角面片,通过协方差矩阵与球谐系数实现高质量体素化渲染。该技术突破点云精度瓶颈,但与UE5现有资产管线存在根本性不兼容——静态网格导入器无法解析scale/rot/sh系数等非标顶点语义,标准光栅化管线亦无法执行高斯核采样计算。XV3DGS-UEPlugin通过自定义资产类型、StructuredBuffer GPU数据流与专用材质节点,将高斯泼溅重构为可编辑、可LOD

weixin_33692177的博客 357

从原理图到PCB:基于Allegro的8槽PXIe背板高速设计实战

本文详细介绍了基于Allegro软件进行8槽PXIe背板高速设计的完整实战流程。从理解规范、原理图设计、PCB布局规划,到高速PCIe差分对与精密时钟的布线艺术,再到电源与地处理以及最终的设计验证与生产文件输出,系统性地阐述了确保背板信号完整性、电源完整性和系统稳定性的关键技术与工程实践。

weixin_28312391的博客 203

Docker部署NextTrace Web路由工具

Docker部署NextTrace Web路由工具

jks212454的博客 603

手把手学计科--web网页设计

网页的组成:文字、图像和超链接等元素。还可以包括哦音频、视频和动画。分类:静态(固定信息)和动态(与服务器数据库进行实时的数据交换。HTML和CSS 是一种静态网页搭建技术。

Yhvaely的博客 1747

Jaeger分布式追踪平台:如何用开源工具快速定位微服务性能瓶颈?

还在为微服务架构中的性能问题头疼吗?😫 当你的应用从单体架构升级到微服务架构后,一个简单的用户请求可能要在十几个服务之间跳转,一旦出现延迟或错误,排查起来就像大海捞针。Jaeger正是为解决这一痛点而生——它是一个开源的分布式追踪平台,让你像查看地图一样清晰地看到请求在微服务网络中的完整路径和每个节点的耗时情况。 **核心关键词**:分布式追踪平台、微服务性能监控、Jaeger追踪系统、请求链

gitblog_01049的博客 970

从零打造音乐会级特雷门琴:原理、设计与调试全解析

电子乐器的工作原理通常基于信号生成与调制。特雷门琴作为世界上最早的电子乐器之一,其核心原理是利用射频振荡器和电容传感,将演奏者的手势变化转化为音高与音量信号。这种技术通过外差式混频实现音高控制,并利用压控放大器实现细腻的音量动态,其工程价值在于将抽象的空间位置信息精确映射为连续的音频参数。在音乐制作、声音艺术和交互装置等领域,这类技术为创造独特的演奏体验提供了基础。本文聚焦于如何从电路层面实现一台高稳定性的特雷门琴,详细阐述了从LC振荡器设计、天线场形优化到音色混合检波等关键环节,并分享了基于LTspice

weixin_34046298的博客 170

Ubuntu 24.04中文输入法终极指南:从安装到疑难排解

本文是Ubuntu 24.04中文输入法的完整指南,详细介绍了如何通过图形界面或命令行安装和配置Intelligent Pinyin输入法。内容涵盖IBus框架的运作原理、输入法快捷键调校、模糊音设置,并重点解决了Qt应用无法输入中文的疑难问题,最后提供了Fcitx5备选方案及常见故障的排解方法。

weixin_29294975的博客 1241

Docker容器CPU性能瓶颈分析与优化(CPU份额设置全解析)

解决Docker容器CPU性能瓶颈,深入解析CPU份额设置方法。涵盖资源分配原理、-c参数配置技巧及多容器场景应用,提升系统调度效率与服务稳定性。运维优化必备,值得收藏

LiteCode的博客 1084

小白的MatSWMM使用心路(二)——用matlab修改INP文件参数/使用matlab查找txt内容并修改多行内容

说是修改inp,但是里面的内容大部分还是讲怎么修改txt的……(?)。包含如何找到需要的参数(关键字)位置,以及修改那个位置的txt这样的内容。希望能帮助大家吧……Matlab你要多出好用的功能啊!

weixin_44276743的博客 4530

彻底解决Docker-Pi-hole性能瓶颈:Host模式与Bridge模式深度测评

Docker-Pi-hole作为一款在容器中运行的网络广告拦截工具,正被越来越多的用户采用。然而,许多用户在使用过程中都会遇到性能瓶颈问题,影响网络体验。本文将深入对比Host模式与Bridge模式两种网络配置方案,为你提供简单有效的性能优化指南,帮助你轻松解决Docker-Pi-hole的性能困扰。 ## 一、Docker网络模式基础:Host与Bridge核心差异 Docker提供了多种网

gitblog_00439的博客 979

zemax---光学设计基础概念篇(持续更新中)

光学设计相关知识概念

u011699626的博客 1145

Python语言基本语法元素

Python语言的基本语法元素:包括Python程序的格式框架,语法元素名称,数据类型和语句元素以及基本的输入输出函数。

Python全栈系列 8364

微服务部署瓶颈?用Docker Compose构建高性能多网络环境(实战案例)

突破微服务部署瓶颈,掌握Docker Compose多网络连接实战技巧。适用于多服务隔离与通信场景,通过自定义网络提升容器间通信效率与安全性。配置简单、扩展性强,助力构建高性能微服务架构,值得收藏。

QuickProceed的博客 883

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

雷池WAF实战:如何用Docker Compose快速部署并保护你的Web服务

本文详细介绍了如何使用Docker Compose快速部署雷池WAF,以保护Web服务免受SQL注入、XSS跨站脚本等常见攻击。通过环境规划、容器化部署实战、防护策略配置和高阶运维技巧,帮助企业构建可靠的Web安全防线,提升Web应用防护能力。

soda5的博客 790

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Docker Compose扩展服务性能瓶颈突破(90%开发者忽略的资源限制问题)

突破Docker Compose的扩展服务性能瓶颈,解决90%开发者忽略的资源限制问题。涵盖微服务部署场景,通过合理配置CPU、内存与副本数优化服务扩展性,提升系统稳定性与响应效率。实用方案值得收藏。

LiteCode的博客 1002

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Docker+Nginx部署Python Web应用最佳实践

容器化技术已成为现代应用部署的标准方案,其中Docker通过镜像封装解决了环境一致性问题。结合Nginx反向代理,可以构建高可用的Web服务架构。这种组合特别适合Python Web应用部署,能有效处理静态资源、负载均衡和SSL终端等需求。在生产环境中,通过Gunicorn等WSGI服务器与Docker容器配合,再以Nginx作为前端代理,可以实现资源隔离、性能优化和便捷扩展。本文以Flask/Django等框架为例,详细讲解从镜像构建、编排部署到性能调优的全流程实践,涵盖健康检查、日志管理和安全加固等关键

weixin_30691871的博客 293

3步定位微服务性能瓶颈:Pinpoint全链路追踪实战指南

Pinpoint是一款针对大规模分布式系统的APM(Application Performance Management)工具,能够帮助开发者快速定位微服务架构中的性能瓶颈,实现全链路追踪与问题诊断。本文将通过三个简单步骤,带你掌握如何利用Pinpoint实现微服务性能监控与优化。 ## 一、认识Pinpoint:微服务架构的"透视镜" 🕵️‍♂️ 在复杂的微服务架构中,一个请求往往需要经过

gitblog_00996的博客 680
上一篇: hadoop+hbase on mesos环境搭建
下一篇: Python实现向s3共享存储上传和下载文件
liujinliu001
博客等级 码龄12年 22粉丝 59原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值