【性能测试】中间件优化

news2025/4/8 12:03:12

1、Tomcat

  1. 优化连接数、线程池

在这里插入图片描述打开tomcat安装目录\conf\server.xml文件,在server.xml中 有以下配置:

tomcat HTTP/1.1
<Connector port="8080" protocol="HTTP/1.1"
maxThreads="1000"
acceptCount="1500"
connectionTimeout="20000"
redirectPort="8443"
minProcessors="5"  
maxProcessors="75"/>

参数说明:
• maxThreads 客户请求最大线程数,表示Tomcat可创建的最大的线程数,默认值是200
• minSpareThreads Tomcat初始化时创建的 socket 线程数
• maxSpareThreads Tomcat连接器的最大空闲 socket 线程数
• enableLookups 若设为true, 则支持域名解析,可把 ip 地址解析为主机名
• acceptAccount 监听端口队列最大数,满了之后客户请求会被拒绝(不能小于maxSpareThreads )
• connectionTimeout 连接超时
• minProcessors 服务器创建时的最小处理线程数
• maxProcessors 服务器同时最大处理线程数

  1. 配置JVM
JAVA_OPTS="-server  -Xms2048M -Xmx2048M -XX:PermSize=256M -XX:MaxPermSize=512M

参数说明:
• -Xms:设置JVM初始内存大小(默认是物理内存的1/64)
• -Xmx:设置JVM可以使用的最大内存(默认是物理内存的1/4,建议:物理内存80%),一般我们会把Xms和Xmx设置一样大,这样在服务器启动时就是最大值可以避免内存膨胀和回落时带来的资源的消耗。特别是回落时会带来cpu的高速运转进行垃圾回收,系统可能会出现几秒甚至几十秒的卡顿现象。
• -XX:PermSize :为JVM启动时Perm的内存大小
• -XX:MaxPermSize :为最大可占用的Perm内存大小(默认为32M)

2、Nginx

  1. 最大打开文件数
    打开nginx/nginx.conf文件:
worker_rlimit_nofile 65535; #一个nginx 进程打开的最多文件,可与ulimit -n一致,65535
  1. Nginx运行CPU亲和力(默认为2)
    打开nginx/nginx.conf文件:
worker_processes 8; nginx 进程数,建议按照cpu 数目来指定,一般为它的倍数 (,2个四核的cpu计为8)
  1. 单个进程最大连接数
    打开nginx/nginx.conf文件:
worker_connections 65535; 是单个worker进程允许客户端最大连接数,这个数值一般根据服务器性能和内存来制定,实际最大值就是worker进程数乘以work_connections
  1. gzip 调优
gzip on;
gzip_min_length 2k;
gzip_buffers 4 32k;
gzip_http_version 1.1;
gzip_comp_level 6;
gzip_typestext/plain text/css text/javascriptapplication/json application/javascript application/x-javascriptapplication/xml;
gzip_vary on;
gzip_proxied any;
gzip on; #开启压缩功能

使用gzip压缩功能,可能为我们节约带宽,加快传输速度,有更好的体验,也为我们节约成本,所以说这是一个重点。
Nginx启用压缩功能需要ngx_http_gzip_module模块,apache使用的是mod_deflate。
一般我们需要压缩的内容有:文本,js,html,css,对于图片,视频,flash什么的不压缩,同时也要注意,我们使用gzip的功能是需要消耗CPU的

3、Redis

  1. 合理设置内存使用

    在Redis中,一般会设置maxmemory参数来限制Redis使用的最大内存,这个参数可以通过redis.conf配置文件中的maxmemory参数设置。例如,我们可以通过下面的命令打开redis.conf文件并修改maxmemory参数的值:

    maxmemory 4gb
    

    这里将Redis的最大内存限制设置为4GB。保存修改后,重启Redis服务即可生效。该参数如果不设置或者设置为0,则redis默认的内存大小为:
    32位下默认是3G
    64位下不受限制
    一般推荐Redis设置内存为最大物理内存的四分之三。

  2. 调整配置文件中的参数

    Redis的性能参数可以在redis.conf配置文件中进行设置。这里介绍几个参数的含义和作用:

    • tcp-keepalive:开启TCP连接保活机制,通过发送心跳包保持连接状态。

    • tcp-backlog:设置TCP连接队列的长度。

    • client-output-buffer-limit:客户端输出缓冲区限制。
      例如,修改tcp-keepalive和tcp-backlog参数:

      # 开启TCP连接保活机制
      tcp-keepalive 60
      # 设置TCP连接队列长度
      tcp-backlog 128
      
  3. 修改系统中redis配置
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/998698.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python网络爬虫库:轻松提取网页数据的利器

网络爬虫是一种自动化程序&#xff0c;它可以通过访问网页并提取所需的数据。Python是一种流行的编程语言&#xff0c;拥有许多强大的网络爬虫库。在本文中&#xff0c;我们将介绍几个常用的Python网络爬虫库以及它们的使用。 Requests库 Requests是一个简单而优雅的HTTP库&…

mysql中GROUP_CONCAT函数详解

GROUP_CONCAT是MySQL中的一个聚合函数&#xff0c;它用于将多行数据按照指定的顺序连接成一个字符串&#xff0c;并返回结果。下面是对GROUP_CONCAT函数的详解&#xff1a; 语法&#xff1a; GROUP_CONCAT([DISTINCT] expr [,expr …] [ORDER BY {unsigned_integer | col_name…

揭秘动态网页与JavaScript渲染的处理技巧

大家好&#xff01;作为一名互联网技术爱好者&#xff0c;今天我要和大家分享一个关于Python数据采集的重要技巧——处理动态网页与JavaScript渲染&#xff01;这是一项在数据获取领域中非常关键的技能&#xff0c;让我们一起揭秘它的神秘面纱吧&#xff01; 首先&#xff0c;让…

antd-vue - - - - - select自定义渲染[封装select组件]

select自定义渲染[封装select组件] 1. 期望效果2. 代码展示 1. 期望效果 标签值和option展示不一致&#xff01; 2. 代码展示 官网地址:【antd-vue select】 封装的select组件&#xff1a; <template><a-form ref"refForm" :model"selectConfig&…

K8S1.23.6版本详细安装教程以及错误解决方案(包括前置环境,使用部署工具kubeadm来引导集群)

准备工作&#xff08;来自官方文档&#xff09; 一台兼容的 Linux 主机。Kubernetes 项目为基于 Debian 和 Red Hat 的 Linux 发行版以及一些不提供包管理器的发行版提供通用的指令。每台机器 2 GB 或更多的 RAM&#xff08;如果少于这个数字将会影响你应用的运行内存&#xf…

Python中的包管理方法

在Python开发中&#xff0c;包管理与依赖问题一直是开发者头疼的问题之一。随着项目规模的增大和复杂性的增加&#xff0c;管理各种依赖包和解决版本冲突变得尤为重要。本文将分享解决Python中的包管理与依赖问题的方法和工具&#xff0c;帮助开发者更好地管理项目中的依赖关系…

Chrome浏览器旧版本和驱动114113老版本下载

搜了下硬盘&#xff0c;只发现了78版本和113版本的&#xff0c;找114版本的没找到 浏览器安装包和驱动都有&#xff0c;配套使用 113版本已关闭自动更新&#xff0c;78版本包含360极速浏览器 链接&#xff1a;点击进入网盘下载 提取码&#xff1a;XjAu

C++新经典10--vector以及其使用

vector vector类型是一个标准库中的类型&#xff0c;代表一个容器、集合或者动态数组这样一种概念。既然是容器&#xff0c;那就可以把若干个对象放到里面。当然&#xff0c;这些对象的类型必须相同。简单来说&#xff0c;可以把一堆int型数字放到vector容器中去&#xff0c;复…

量化交易全流程(一)

-----------------------------------前沿介绍-------------------------------------- 量化投资基本概念&#xff1a;凡是借助于数学模型和计算机实现的投资方法都可以成为量化投资&#xff0c;多因子策略&#xff0c;期货CTA策略&#xff0c;套利策略和高频交易策略。 量化…

一片编程文章

前言&#xff1a;相信看到这篇文章的小伙伴都或多或少有一些编程基础&#xff0c;懂得一些linux的基本命令了吧&#xff0c;本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python&#xff1a;一种编程语言&…

QQ聊天记录删除了怎么恢复?果粉都是这么做的

QQ自1999年推出以来就广受欢迎&#xff0c;在这二十多年里&#xff0c;QQ已经建立起了庞大的用户基础。即使微信崛起&#xff0c;仍旧有很多小伙伴不愿“抛弃”QQ。在使用QQ的过程中&#xff0c;您是否会遇到误删聊天记录的情况&#xff1f;qq聊天记录删除了怎么恢复&#xff1…

赋能工业物联网 | 数据驱动,加速智能制造

行业背景 工业物联网场景下&#xff0c;随着智能设备及物联网技术的广泛应用&#xff0c;数据是最重要的资源之一&#xff0c;企业需要对各种机器、设备和传感器产生的时序数据进行采集、存储与分析。 因此&#xff0c;何为行之有效的数据库解决方案&#xff1f;企业普遍更为…

Charles基础使用指南

##Charles 基本使用指南 Charles 在本地构建一个HTTP代理服务器&#xff0c;可以实现对HTTP、HTTPS请求的抓取&#xff0c;也就是我们常说的抓包&#xff0c;以及对请求响应的修改等。 Charles 官网地址 https://www.charlesproxy.com/ ###一、移动端的抓包实现 1. PC端开启…

3招“挽回”:微信怎么恢复聊天记录

由于工作需要&#xff0c;经常使用微信与客户对接。害怕内存不足&#xff0c;所以我每个月都会清理一些不需要的文件&#xff0c;结果却不小心误删了与客户的聊天记录&#xff0c;有什么方法能够恢复回来吗&#xff1f; 聊天记录是微信的一个重要组成部分&#xff0c;里面保存着…

基于javaweb的CT图像管理系统(servlet+jsp)

系统简介 本项目采用eclipse工具开发&#xff0c;jspservletjquery技术编写&#xff0c;数据库采用的是mysql&#xff0c;navicat开发工具。 三个角色&#xff1a;管理员&#xff0c;普通用户&#xff0c;医生 模块简介 管理员&#xff1a; 1、登录 2、用户管理 3、医生管…

科技部副部长:以负责任的态度推动大模型发展,加强国际交流合作

源自&#xff1a;澎湃新闻 ChatGPT大模型技术拉开了迈向通用人工智能的序幕&#xff0c;通用人工智能将引发经济、社会、文化等领域的变革&#xff0c;有望推进人类社会迈向智能增强的时代。 要坚持开源协作&#xff0c;加强大模型技术持续创新&#xff0c;协同解决透明性、稳…

SEO优化的优势(让你的网站脱颖而出)

随着互联网技术的快速发展&#xff0c;现如今每个企业或个人都拥有自己的网站。然而&#xff0c;要想在竞争激烈的网络世界中脱颖而出并吸引更多的用户&#xff0c;SEO优化就显得尤为重要。在本文中&#xff0c;我们将详细介绍SEO优化所带来的优势。 一&#xff1a;提高网站排名…

电子电路学习笔记之NCV84120DR2G——车规级单通道高压侧驱动器

关于车规级芯片&#xff1a; 关于车规级芯片&#xff08;Automotive Grade Chip&#xff09;&#xff0c;车规级芯片是专门用于汽车行业的芯片&#xff0c;具有高可靠性、高稳定性和低功耗等特点&#xff0c;以满足汽车电子系统的严格要求。这些芯片通常用于车载电子控制单元&…

数据库深分页介绍及优化方案 | 京东云技术团队

在前端页面显示&#xff0c;为了避免一次性展示全量数据&#xff0c;通过上下翻页或指定页码的方式查看部分数据&#xff0c;就像翻书一样&#xff0c;这就利用了MySQL的分页查询。 一、MySQL的深分页 查询偏移量过大的分页会导致数据库获取数据性能低下&#xff0c;以如下SQ…

vue设置全局变量:让你的数据无处不在!

前言 在 vue 开发中&#xff0c;如何设置全局变量是一个关键问题。本文将介绍多种方法&#xff0c;帮助大家轻松实现全局变量的共享&#xff0c;提升 vue 项目的开发效率。让我们一起来探索这些方法&#xff0c;为你的 vue 项目带来更好的开发体验。 方法一&#xff1a;使用 Vu…