腊鱼怎么做好吃服务器性能优化的8种常⽤⽅法
1.使⽤内存数据库
内存数据库,其实就是将数据放在内存中直接操作的数据库。相对于磁盘,内存的数据读写速度要⾼出⼏个数量级,将数据保存在内存中相⽐从磁盘上访问能够极⼤地提⾼应⽤的性能。内存数据库抛弃了磁盘数据管理的传统⽅式,基于全部数据都在内存中重新设计了体系结构,并且在数据缓存、快速算法、并⾏操作⽅⾯也进⾏了相应的改进,所以数据处理速度⽐传统数据库的数据处理速度要快很多。
但是安全性的问题可以说是内存数据库最⼤的硬伤。因为内存本⾝有掉电丢失的天然缺陷,因此我们在使⽤内存数据库的时候,通常需要,提前对内存上的数据采取⼀些保护机制,⽐如备份,记录⽇志,热备或集,与磁盘数据库同步等⽅式。对于⼀些重要性不⾼但是⼜想要快速响应⽤户请求的部分数据可以考虑内存数据库来存储,同时可以定期把数据固化到磁盘。
口袋妖怪白攻略2.使⽤RDD
在⼤数据云计算相关领域的⼀些应⽤中,Spark可以⽤来加快数据处理速度。Spark的核⼼是RDD,RDD最早来源与Berkeley实验室的⼀篇论⽂《Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing》。现有的数据流系统对两种应⽤的处理并不⾼效:⼀是迭代式算法,这
在图应⽤和机器学习领域很常见;⼆是交互式数据挖掘⼯具。这两种情况下,将数据保存在内存中能够极⼤地提⾼性能。
3.增加缓存
很多web应⽤是有⼤量的静态内容,这些静态内容主要都是⼀些⼩⽂件,并且会被频繁的读,采⽤Apache以及nginx作为web服务器。在web访问量不⼤的时候,这两个http服务器可以说是⾮常的迅速和⾼效,如果负载量很⼤的时候,我们可以采⽤在前端搭建cache服务器,将服务器中的静态资源⽂件缓存到操作系统内存中直接进⾏读操作,因为直接从内存读取数据的速度要远⼤于从硬盘读取。这个其实也是增加内存的成本来降低访问磁盘带来的时间消耗。
4.使⽤SSD
除了对内存⽅⾯的优化,还可以对磁盘这边进⾏优化。跟传统机械硬盘相⽐,固态硬盘具有快速读写、质量轻、能耗低以及体积⼩等特点。但是ssd的价格相⽐传统机械硬盘要贵,有条件的可以使⽤ssd来代替机械硬盘。
小西装搭配图片5.优化数据库
⼤部分的服务器请求最终都是要落到数据库中,随着数据量的增加,数据库的访问速度也会越来越慢。
想要提升请求处理速度,必须要对原来的单表进⾏动⼑了。⽬前主流的Linux服务器使⽤的数据库要属mysql了,如果我们使⽤mysql存储的数据单个表的记录达到千万级别的话,查询速度会很慢的。根据业务上合适的规则对数据库进⾏分区分表,可以有效提⾼数据库的访问速度,提升服务器的整体性能。另外对于业务上查询请求,在建表的时候可以根据相关需求设置索引等,以提⾼查询速度。
显示隐藏文件夹6.选择合适的IO模型
IO模型⼜分为:
(1).阻塞I/O模型:数据没到达之前,I/O⼀直阻塞,如果数据到达,则会返回。典型的是recvfrom,⼀般的默认都是阻塞的。
(2).⾮阻塞的I/O模型:和阻塞相反,只要不能得到结果的时候,I/O⽴刻返回。不会阻塞当前线程。
IO复⽤模型:也就是⾃⼰要学习的部分。多路复⽤的意思是,将多路信号合并到⼀路上进⾏处理,类似多个管道汇集到⼀个管道,与之相反的是多路分解。
三八节的祝福语IO复⽤模型主要是select,poll,epoll;对⼀个IO端⼝,两次调⽤,两次返回,⽐阻塞IO并没有什么优越性;关键是能实现同时对多个IO端⼝进⾏监听;函数也会使进程阻塞,但是和阻塞I/O所不同的的,这两个函数可以同时阻塞多个I/O操作。⽽且可以同时对多个读操作,多个写操作的I/O函数进⾏检测,
直到有数据可读或可写时,才真正调⽤I/O操作函数。
英雄联盟qq签名信号驱动:⾸先开启套接⼝信号驱动I/O功能,并通过系统调⽤sigaction安装⼀个信号处理函数。当数据报准备好被读时,就为该进程⽣成⼀个SIGIO信号。随即可以在信号处理程序中调⽤recvfrom来读数据报,井通知主循环数据已准备好被处理中。也可以通知主循环,让它来读数据报。
异步的IO模型:告知内核启动某个操作,并让内核在整个操作完成后(包括将数据从内核拷贝到⽤户⾃⼰的缓冲区)通知我们。这⾥并不是说⼀定要⽤某个模型,epoll也并不是在所有情况下都⽐select性能要好的,在选择的时候还是要结合业务需求来。
7.使⽤多核处理策略
现在运⾏服务器的主流机器配置都是多核CPU的,我们在设计服务器的时候可以利⽤多核⼼的特点,采⽤多进程或者多线程的框架。关于选择多线程还是多进程可以根据实际的需求,结合各⾃的优缺点进⾏选择。对于多线程的使⽤,特别是使⽤线程池的时候可以通过测试不同线程池服务器的性能来设置合适的线程池。
8.分布式部署程序
当单机服务器已经不到合适的优化点时,我们可以通过分布式部署来提⾼服务器的响应能⼒。优秀
的服务器开发都会为⾃⼰的服务器的扩容,容灾提出⼀些解决⽅案。个⼈觉得服务器设计的时候简单点⽐较好,这样后期扩容的时候会很⽅便。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论