服务的优化

mysql优化:

软件方面:

1、选择最合适的字段属性。mysql在创建数据库的时候肯定是数据库中的表越小越好,这样才能提高查询的速度。比如说在存储电话号的时候,如果将其写成CHAR(255),这显然会给数据库带来很多不必要的空间浪费,明明CHAR(11)就可以解决的问题。

2、合理使用外键。

外键本身存在的作用就是保证表与表之间的参照完整性,使用外键可以有效地增加数据之间的关联性。在mysql中,外键是用于建立和加强两个表数据之间的链接的一列或多列,它表示一个表中的一个字段被另一个表中的一个字段引用。外键对相关表中的数据造成了限制,使MySQL能够保持参照完整性。

主键(primary key) 能够唯一标识表中某一行的属性或属性组。

3、正确使用索引。

索引是提高数据库性能的最常见的方法,能够正确地使用索引,能够大大地提高查询效率。

但是也不能够为所有的列都创建索引,因为它本身会占用内存,维护起来也很麻烦,它就是一把双刃剑,所以索引在使用的时候需要根据实际情况正确使用才行。

4、优化查询语句。

已将创建了索引的字段上不要使用函数,那样会导致索引失效。

查询时不鼓励使用like语句查询,因为那会消耗掉一部分系统的性能。

不要用 类似  * 号这种,数据库会进行全局检索,消耗性能。

5、打开慢查询。

6、调整连接数。

硬件方面:

内存,磁盘,cpu的升级。网络带宽的增加。

架构方面:

主从复制,读写分离。


nginx优化:

1、设置Nginx中进程数

user nginx;
worker_processes auto;

2、CPU亲和设置

cpu线程数配置,在高并发情况下,通过设置cpu亲和力来降低由于多核切换带来的性能损耗。

worker_processes auto;
worker_cpu_affinity auto;

需要手动写要绑定到CPU核的配置,cpu有多少个核,就有几位数,1代表内核开启,0代表内核关闭。

3、设置nginx最大可打开文件数

 在nginx.conf文件全局配置中添加:

worker_rlimit_ nofile 102400;

然后还要修改系统可以打开的最大文件数 :

临时修改:  ulimit   -n  102400

永久修改 : vim /etc/security/limits.conf 

*  soft  nofile  102400
*  hard  nofile  102400

4、Nginx事件处理模型

events {
    use epoll;                #使用epoll模型
    worker_connections 1024;  #单个进程允许客户端最大并发连接数
}

5、 sendfile  on;(在http模块中)

开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来传输,输出文件,当nginx是一个静态文件服务器的时候,开启sendfile配置项能大大提高nginx的性能。

6、设置长连接超时时间 

 主要目的是CPU,内存,控制连接数,因为建立连接也是需要消耗资源的

vim /usr/local/nginx/conf/nginx.conf
keepalive_timeout  65;  (在http模块中)

keepalived_timeout  与client的keep-alive连接超时时间,单位是秒,服务器和客户端无交互后将在这个时间后关闭连接,长连接可以减少重建连接的开销,如果设置时间过长,用户又多,长时间保持连接会占用大量资源。


Tomcat优化:

1、jvm垃圾回收器优化设置 

2、内存空间优化

JAVA_OPTS="-server -Xms4g -Xmx4g -XX:NewSize= -XX:MaxNewSize= "

-server:服务器模式
-Xms:堆内存初始化大小
-Xmx:堆内存空间上限
-XX:NewSize=:新生代空间初始化大小
-XX:MaxNewSize=:新生代空间最大值

生产案例:

[root@centos7 ~]#vim /usr/local/tomcat/bin/catalina.sh
# OS specific support.  $var _must_ be set to either true or false.
JAVA_OPTS="-server -Xms4g -Xmx4g -Xss512k -Xmn1g -XX:CMSInitiatingOccupancyFraction=65 -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:+DisableExplicitGC -XX:MaxTenuringThreshold=10 -XX:NewRatio=2 -XX:PermSize=128m -XX:MaxPermSize=512m -XX:CMSFullGCsBeforeCompaction=5 -XX:+ExplicitGCInvokesConcurrent -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods"

cygwin=false
darwin=false
#一台tomcat服务器并发连接数不高,生产环境建议分配物理内存通常4G到8G较多,如果需要更多连接,一般会利用虚拟化技术实现多台tomcat

3、 线程池调整

[root@centos8 ~]#vim /usr/local/tomcat/conf/server.xml
......
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000"
redirectPort="8443" />
......

常用属性:

  • connectionTimeout :连接超时时长,单位ms
  • maxThreads:最大线程数,默认200
  • minSpareThreads:最小空闲线程数
  • maxSpareThreads:最大空闲线程数
  • acceptCount:当启动线程满了之后,等待队列的最大长度,默认100
  • URIEncoding:URI 地址编码格式,建议使用 UTF-8
  • enableLookups:是否启用客户端主机名的DNS反向解析,缺省禁用,建议禁用,就使用客户端IP就行
  • compression:是否启用传输压缩机制,建议 “on”,CPU和流量的平衡
    • compressionMinSize:启用压缩传输的数据流最小值,单位是字节

compressableMimeType:定义启用压缩功能的MIME类型text/html, text/xml, text/css, text/javascript


redis优化:

(7条消息) redis优化篇_Ariel小葵的博客-CSDN博客_redis优化


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值