无锡企业网站制作中大多数开发公司采用MySQL作为系统默认的数据库。下图为各类数据库的使用占比情况(数据来源:eversql.com)
我司在网站开发制作过程中采用的默认数据库也是MySQL。MySQL的优点我们就不再赘述,百度下铺天遍地。
问题
我们经常有这么一个应用场景,企业的门户网站,日访问量3000PV,WEB页面及数据库采用单台云主机部署。如阿里云的1Core CPU/4G RAM/高效云盘,那么才使用过程中我们会发现很多时候会出现访问很慢的情况,查看系统资源CPU:75%,内存80%,然后致命问题是磁盘读写100%(高效云盘系统盘在2000IOPS左右,读写140Mbps)如下图:
可是一个企业网站,页面加载大小1M且带宽只有3M的云主机,读写峰值200多M,平均130M肯定异常。
优化
下面我们介绍检查MySQL配置及优化参数。
show global status like '%innodb_buffer_pool_wait%';
查看MySQL等待区,会发现运行一段时间之后该变量值直线上升,此为导致磁盘大量读写的主要原因。
我们在网站制作中MySQL优化主要以下这些变量。
expire_logs_days=7sql_mode= #sql_mode 配置为空值log_timestamps = SYSTEMwait_timeout = 31536000######################### 性能参数 ####################open_files_limit = 10240max_connections = 10000max_user_connections=9990max_connect_errors = 100000table_open_cache = 1024thread_cache_size = 64max_heap_table_size = 32Mquery_cache_type = 0###global cache ###key_buffer_size = 1Gquery_cache_size = 0tmp_table_size = 32M #内存临时表binlog_cache_size = 4M #二进制日志缓冲###session cache ###sort_buffer_size = 8M #排序缓冲join_buffer_size = 4M #表连接缓冲read_buffer_size = 8M #顺序读缓冲read_rnd_buffer_size = 8M #随机读缓冲thread_stack = 256KB #线程的堆栈的大小######################### innodb ##########################default_storage_engine = InnoDBinnodb_buffer_pool_size = 8G #系统内存50%innodb_open_files = 5120innodb_flush_log_at_trx_commit = 2innodb_file_per_table = 1#innodb_buffer_pool_instances = 6innodb_log_file_size = 1Ginnodb_log_files_in_group = 2innodb_strict_mode = OFFinnodb_sort_buffer_size = 4194304innodb_io_capacity=2800innodb_io_capacity_max=10000innodb_flush_method = O_DIRECTinnodb_large_prefix = 0innodb_thread_concurrency = 0 #用户线程的数量小于64,设置为0
针对上面的问题,主要调整innodb_buffer_pool_size来解决磁盘读写问题,这个值可以根据云主机的配置进行调整。
总结
MySQL在日常使用中会有很多灵活调整的东西,这个是系统开发中必须要去做的。以上优化的参数参照,需要根据你服务器的CPU、内存、磁盘的IOPS来做细微的调整。我司提供专业的系统运维服务及网站建设服务。欢迎咨询!
内容源于网络,如有侵权或违规我们会尽快整改
上一篇:城市企业网站制作部署中的几个优化细节
Linux上如何监控CPU和内存指标:下一篇