`

Linux、mysql、tomcat大并发下的配置

阅读更多
一、前言
    因为之前一直没太接触过项目实现部署的问题,所以中间出现了N多问题,现在有时间了,做了一个整理,已备后用。此处不包括上一层服务器的负载,如使用nginx/apache等。

二、实现
mysql:
1. 最大连接数:
配置项目中的连接池最大连接数 <= mysql的max_connections(如项目有集群,则乘N)
可解决出现:MySQL 提示 Too many connections ( 1040 )
SELECT @@max_connections; -- 查看现有设置数量

临时解决方案:
set global max_connections = 3600; -- 重启后失效

最终解决方案:
1)首先修改/etc/my.cnf(Ubuntu 10下为/etc/mysql/my.cnf)
Linux: vi /etc/my.cnf

2)在[mysqld]最后增加一行
max_connections=5000

3)重新启动mysql
Linux: service mysqld start


2. 序列
非主键的WHERE条件,则可增加序列。

3. 数据类型
相关联的两表中的相同字段长度要一致,mysql取值如果满足可用占用空间小的,如tinyint、smallint等等


tomcat:
catalina.sh  在cygwin=false前面添加
JAVA_OPTS="-server -Xms512M -Xmx512M -Xss256K -Djava.awt.headless=true -Dfile.encoding=utf-8 -XX:PermSize=64M -XX:MaxPermSize=128m"


server.xml
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="1000" minSpareThreads="350" />

<Connector port="8080"
        protocol="org.apache.coyote.http11.Http11NioProtocol" // NIO
        executor="tomcatThreadPool" // Executor 线程池
        compression="on"
        compressionMinSize="2048"
        maxThreads="30000" //设定处理客户请求的线程的最大数目,决定了服务器可以同时响应客户请求的数,默认200
        minSpareThreads="512" //初始化线程数,最小空闲线程数,默认为10
        maxSpareThreads="2048"
        enableLookups="false" //关闭DNS反向查询,性能高设false
        redirectPort="8443"
        acceptCount="35000" //当所有可以使用的处理请求的线程数都被使用时,可以被放到处理队列中请求数,请求数超过这个数的请求将不予处理,默认100
        debug="0"
        connectionTimeout="40000"
        disableUploadTimeout="true" URIEncoding="UTF-8" useBodyEncodingForURI="true" />


引用



linux:
查询ulimit命令
# 显示当前所有的 limit 信息
Linux: ulimit -a
# Linux操作系统对一个进程可以打开最大文件描述符的数量
Linux: ulimit -n
# 用户最大可用的进程数
Linux: ulimit -u

1. 句柄数:ulimit -n
问题: Can’t open so many files
临时解决方案:
ulimit -SHn 65535

最终解决方案,在/etc/security/limits.conf文件中设置最大打开文件数 添加:
Linux: vi /etc/security/limits.conf

# *代表针对所有用户
*      soft    nofile        65535       
*      hard    nofile        65535

最后用重启ulimit -a再次查看,open files的值,如果改过来,则生效。


2. 用户进程数:ulimit -u
比如我们在模拟大规模http并发测试的时候,客户端会报一个无法fork new proc异常,原因是受到了最大进程1024的限制,解除 Linux 系统的最大进程数
解决方案:修改/etc/security/limits.d/90-nproc.conf
Linux: vim /etc/security/limits.d/90-nproc.conf

# 添加如下的行
*          soft    nproc     102400
root       soft    nproc     102400


3. 网络参数
修改/etc/sysctl.conf文件,增加如下内容
Linux: vim /etc/sysctl.conf


net.core.netdev_max_backlog = 32768 
net.core.somaxconn = 32768 
net.core.wmem_default = 8388608 
net.core.rmem_default = 8388608 
net.core.rmem_max = 16777216 
net.core.wmem_max = 16777216 
net.ipv4.ip_local_port_range = 1024 65000 
net.ipv4.route.gc_timeout = 100 
net.ipv4.tcp_fin_timeout = 30 
net.ipv4.tcp_keepalive_time = 1200 
net.ipv4.tcp_timestamps = 0 
net.ipv4.tcp_synack_retries = 2 
net.ipv4.tcp_syn_retries = 2 
net.ipv4.tcp_tw_recycle = 1 
net.ipv4.tcp_tw_reuse = 1 
net.ipv4.tcp_mem = 94500000 915000000 927000000 
net.ipv4.tcp_max_orphans = 3276800 
net.ipv4.tcp_max_syn_backlog = 65536

保存退出,执行sysctl命令,重新加载内核参数立刻生效
Linux: sysctl -p

引用

net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
net.ipv4.tcp_fin_timeout = 30 表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。
net.ipv4.tcp_keepalive_time = 1200 表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为20分钟。
net.ipv4.ip_local_port_range = 1024 65000 表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为1024到65000。
net.ipv4.tcp_max_syn_backlog = 8192 表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。
net.ipv4.tcp_max_tw_buckets = 5000表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。默认为 180000,改为5000。对于Apache、Nginx等服务器,上几行的参数可以很好地减少TIME_WAIT套接字数量,但是对于Squid,效 果却不大。此项参数可以控制TIME_WAIT套接字的最大数量,避免Squid服务器被大量的TIME_WAIT套接字拖死。
http://www.jb51.net/article/37835.htm



引用

分享到:
评论

相关推荐

    CentOS7 安装JDK8 + MySQL8 + Tomcat9并配置环境变量.pdf

    本文将详细介绍如何在CentOS7上安装JDK8、MySQL8和Tomcat9,并配置相应的环境变量。 首先,我们开始安装JDK1.8。Oracle官网提供了JDK的下载链接,通常为tar.gz格式的压缩包。你需要在你的本地计算机上下载对应版本...

    linux+tomcat+mysql+solr调优

    ### Linux + Tomcat + MySQL + Solr 调优指南 #### 一、Linux系统调优 ##### TCP连接优化 为了提升Linux系统在网络层面的性能,可以对TCP连接进行优化,尤其是在处理大量并发请求时。以下是一些常用的TCP配置项:...

    Linux系统软件压缩包 JDK 8.0, JDK11版本 Tomcat8.0版本 MySQL 8.0版本

    这个版本进一步提升了数据库的安全性和性能,适合处理高并发、大数据量的业务场景。 这些组件在Linux系统上的安装和配置步骤如下: 1. **JDK**:首先,你需要将下载的JDK压缩包解压到合适的目录,然后设置`JAVA_...

    Linux软件(tomcat、jdk、zookeeper、redis、mysql,nginx)

    本主题将深入探讨在Linux环境下安装和管理几个关键的软件工具:Tomcat、JDK、Zookeeper、Redis、MySQL以及Nginx。这些工具在分布式系统、数据库管理、缓存服务以及网络服务等方面扮演着重要角色。 首先,让我们来...

    最新版linux apache-tomcat-10.0.0.tar.gz

    在Linux环境下,Apache Tomcat与各种其他开源技术如Apache HTTP Server、MySQL、PostgreSQL等有着良好的集成。这种灵活性使得开发者可以构建复杂的企业级应用架构,同时利用Linux的稳定性和安全性。 为了使用这个...

    MySQL Tomcat Apache优化

    在Linux环境下进行MySQL优化与Windows环境下大体相同,但在某些细节上会有所差异。 内存使用量的估计往往是一个复杂的问题。一方面,如果分配给MySQL的内存过少,则可能导致查询性能不佳;另一方面,如果分配过多,...

    Tomcat+Mysql高并发配置优化讲解

    总结,通过上述Tomcat和MySQL的优化配置,我们可以提高系统的并发处理能力,减少延迟,确保在高负载下的稳定运行。但需要注意的是,每个系统都有其特定的需求,因此在实际操作中应根据服务器硬件资源、应用特性以及...

    在RedHat_AS5.0下搭建Apache+MySQL+PHP+Tomcat+JSP平台

    在Red Hat AS5.0操作系统下搭建Apache+MySQL+PHP+Tomcat+JSP平台是一项常见的Web服务配置任务,这个组合常被称为LAMP(Linux + Apache + MySQL + PHP)加上JSP支持,提供了强大的Web应用环境。以下是详细的搭建步骤...

    JDK+Tomcat+MySQL的安装及配置教程图文

    本次教程将详细指导如何安装和配置JDK、Tomcat和MySQL,它们是构建动态网站和网络应用的基础软件,尤其在Java开发环境中扮演着关键角色。 首先,我们来介绍MySQL。MySQL是一个流行的开源关系型数据库管理系统...

    apache-tomcat-8.0.21 for linux

    Apache Tomcat 8.0.21 for Linux是一款开源的Java应用服务器,专门用于运行Java ...了解其内部结构、配置选项以及在Linux环境下的操作,对于开发者和系统管理员来说至关重要,能有效提升开发效率和系统的稳定运行。

    最新版linux apache-tomcat-8.5.69.tar.gz

    综上所述,Apache Tomcat 8.5.69在Linux环境下提供了强大的Web应用托管能力,通过合理配置和优化,可以满足各种规模的业务需求。理解并掌握这些知识点,对于管理和维护基于Tomcat的Java Web应用至关重要。

    Nginx+tomcat6+jdk6+mysql5.6环境配置.rar_nginx_tomcat

    本环境配置教程主要涉及四个核心组件:Nginx、Tomcat6、JDK6和MySQL5.6,它们各自扮演着不同的角色,共同构建了一个高性能的Java Web应用程序平台。下面将详细介绍这四个组件及其相互配合的要点。 1. **Nginx**: ...

    apache-tomcat-8.0.48linux解压版

    1. **性能优化**:Tomcat 8.0.48进行了大量的性能调优,包括更快的启动速度、更高效的请求处理以及内存管理的优化,这使得应用程序在高并发环境下运行更加流畅。 2. **安全性增强**:此版本修复了多个安全漏洞,以...

    Linux下Apache+Tomcat集群指南

    ### Linux下Apache+Tomcat集群指南 #### 一、系统集群环境安装指南 **1.1 文档说明** 本文档旨在详细介绍如何在Linux环境下搭建Apache+Tomcat集群,并实现负载均衡及Session复制等功能。该文档适合希望提高Web...

    如何配置JDK与tomcat

    2. **停止Tomcat**:同样地,在`%CATALINA_HOME%\bin`目录下执行`shutdown.bat`(Windows)或`shutdown.sh`(Unix/Linux)来停止Tomcat。 #### 三、验证配置 完成上述步骤后,您可以通过以下方法验证JDK和Tomcat...

    tomcat环境搭和管理及实现jsp通过tomcat连接mysql

    由于具备技术先进性和稳定性,加上免费和开源的特点,Tomcat在中小型企业应用和并发用户不多的场合下非常受欢迎,是开发和调试JSP程序的首选平台。Tomcat处理HTML页面的能力虽然不如Apache服务器,但它能很好地处理...

    apache-tomcat;jdk-8u201-linux-x64;mysql;nginx;redis

    MySQL 5.7.25-1.el7.x86_64是针对Red Hat Enterprise Linux 7的64位版本,它具有高可用性、可扩展性和安全性。开发者和系统管理员可以利用MySQL进行数据存储、查询和管理,确保应用数据的可靠性。 4. **Nginx**:...

    linux下自动化部署安装工具;支持mysql服务、redis服务、nginx服务、tomcat服务、weavescope服务

    本工具专为Linux系统设计,能够帮助管理员快速、高效地安装和配置多种服务,包括MySQL数据库服务、Redis缓存服务、Nginx反向代理服务器、Tomcat应用服务器以及WeaveScope监控工具。以下将详细讲解这些服务及其在自动...

    Tomcat7性能优化

    本文将围绕“Tomcat7性能优化”这一主题,详细介绍如何通过优化配置提高Tomcat服务器的并发能力,并深入探讨服务器资源(如CPU、内存、硬盘等)对处理能力的影响。 #### 二、理解服务器资源的重要性 在优化Tomcat...

    jdk-8_tomcat-7_MySQL-client-5_MySQL-server-5.rar

    MySQL服务器5版本在Linux上运行,提供数据库服务,支持多用户访问和并发操作,是构建Web应用程序常用的数据存储解决方案。 为了在Linux系统上成功搭建Java Web服务环境,首先需要安装JDK 8,配置好环境变量,确保...

Global site tag (gtag.js) - Google Analytics