我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何优化服务器的性能?

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何优化服务器的性能?

  应用服务器就是处理网站业务的服务器,网站的业务代码都部署在这里,是网站开发最复杂,变化最多的地方,优化手段主要有缓存、集群、异步等。下面来了解一下!
  通常服务器的性能会卡在三个地方:
  cpu
  网络IO
  磁盘IO

如何优化服务器的性能?_服务器_虚拟化_Linux_编程学习网
  一、合理配置虚拟内存
  虚拟内存对服务器性能的影响很大。简单的说,虚拟内存(虚拟化)是物理内存的补充。服务器操作系统在运行过程中,如果内存不够的话,就会先将内存中不用的数据(数据中心)保存在虚拟内存中。当虚拟内存不足时,操作系统就会报虚拟内存不足的错误,同时应用程序的性能会有明显的下降。总之,合理配置虚拟内存是提升Windows服务器性能很重要的一个方面。通常情况下,如果要合理配置虚拟内存的话,要同时兼顾到物理内存的容量、所采用的信息化系统以及虚拟内存的位置。
  物理内存的容量是配置虚拟内存的基础。一般来说,建议虚拟内存的容量是物理内存的1倍左右。如物理内存如果是4G的话,那么虚拟内存最好是8G。至少不能够少于4G。不过这也不是绝对的。有时候会根据所采用的信息化系统的不同,而有一个上下浮动的过程。
  第二个需要考虑的是所采取的信息化应用。笔者认为,这也是在配置虚拟内存时需要考虑的最关键的一个方面。有些信息化系统对于内存的要求比较大。此时光靠物理内存可能无法满足用户的需要,此时就需要借助虚拟内存。如笔者以前接触到一个BI系统。这个系统采用了比较先进的内存压缩技术。简单的说就是在内存中创建数据仓库,以提高读取的效率。在这种情况下,就对内存的容量有比较高的要求。对于这些系统的话,虚拟内存要设置的要一点。而对于其他一些信息化应用,如即时通信服务器、身份验证服务器等等,则虚拟内存就可以设置的低一些。
  第三个需要考虑的因素是虚拟内存的位置。其实虚拟内存就是硬盘上划分的一块固定的空间。现在需要考虑的是,应该将虚拟内存放置在硬盘上的哪一块地方呢?笔者的建议是,最好将虚拟内存存放在系统分区上。当然前提是系统分区有足够多的磁盘空间。同时,这个分区所在的硬盘最好是性能比较好的,以提高数据读取的效率。如果将虚拟内存防止在其他非系统盘上,往往是一个不理智的做法。虽然其不会影响到系统的正常使用,但是会对服务器的性能带来很大的不利影响。
  总之,在配置虚拟内存时,主要从以上三个方面着手。通常情况下配置虚拟内存不会有很大的问题。
  二、为操作系统分区保留足够的空间
  当操作系统分区的空间不足时,会使得服务器操作系统的性能下降,甚至可能导致服务器崩溃。在服务器部署时,最好为操作系统分区保留足够的空间。具体的说,需要考虑如下几个方面的因素。
  提高CPU性能的方法
  并发。利用多线程、进程。老的线程库效率太低,需要升级用nptl 。进(线)程数不要大于cpu个数   谨慎用锁。改善架构,尽量不用锁。
  慎用字符串操作,比如sprintf,snprintf,因为%d %s等等都需要CPU资源去做词法分析,数量多的话,也是不菲的开销
  减少系统调用,例如time,主要消耗在用户态和内核态之间的切换。
  减少遍历操作。
  把握真实需求,简化实现方案
  优化架构,字符串协议解包很耗cpu,考虑单独一个线程
  一个好的架构,服务器的CPU总消耗总是平均的分布在各个cpu上,CPU的消耗在70%左右
  提高网络IO的方法
  Linux可以利用空闲内存作文件系统访问的cache,因此系统内存越大存储系统的性能也越好;利用顺序写,减少寻道次数;Cache策略,充分利用cpu和内存的资源来缓解磁盘读写压力
  使用epoll代替select
  使用非阻塞的模式来开发
  1、提高CPU性能的方法
  并发。利用多线程、进程。老的线程库效率太低,需要升级用nptl 。进(线)程数不要大于cpu个数
  谨慎用锁。改善架构,尽量不用锁。
  慎用字符串操作,比如sprintf,snprintf,因为%d %s等等都需要CPU资源去做词法分析,数量多的话,也是不菲的开销
  减少系统调用,例如time,主要消耗在用户态和内核态之间的切换。
  减少遍历操作。
  把握真实需求,简化实现方案
  优化架构,字符串协议解包很耗cpu,考虑单独一个线程
  一个好的架构,服务器的CPU总消耗总是平均的分布在各个cpu上,CPU的消耗在70%左右
  2、提高网络IO的方法
  使用epoll代替select
  使用非阻塞的模式来开发
  一是考虑到虚拟内存的需要。在上面的内容中笔者谈到过,最好能够将虚拟内存保存在操作系统的分区上,以提高性能。在后续工作中,可能需要部署新的信息化系统。此时就可能需要增加虚拟内存的容量。如果操作系统分区不足的情况下,那么就需要调整系统分区的大小。而这个操作是比较麻烦的,而且风险也比较大。
  二是要考虑到临时文件的需要。在应用软件或者操作系统升级时,或者出于其他的需要,往往会用大比较多的临时文件。通常情况下,这些临时文件时保存在操作系统的分区上。当临时文件比较多时,就需要操作系统分区比较大的空间。故在部署服务器时,要预先评估临时文件的大小,特别是要考虑以后系统升级时的情况。如果所需要的空间实在太大,那么可以考虑将临时文件保存在非操作系统分区上。毕竟临时文件可能只是偶尔要用到。将其放置在非系统分区上,对于性能的影响,也是比较小的。
  三、利用磁盘阵列解决I/O瓶颈
  有些信息化系统比较变态,其数据读取与存入量非常的大。如文件服务器系统、视频监控系统。这些系统虽然其本身并不复杂,对于系统的硬件要求也不高。但是往往对于存储设备的性能有比较高的要求。其性能的瓶颈主要是处在磁盘的I/O上面。做一个形象的比喻,就是车太多、道路太窄。为此就出现了早高峰、晚高峰的堵车现象。
  在Windows服务器操作系统中,可以通过磁盘阵列技术来解决这个问题。在Windows操作系统里,能够支持创建的磁盘阵列技术,如RAID5等等,而不需要第三方插件的支持。这也在很大程度上方便了我们对服务器进行性能的优化。笔者建议,系统管理员应该不时的检测服务器存储上的I/O情况。如果发现冲突比较严重的话,那么就需要及时的采用磁盘阵列技术来减少这种冲突。
  四、三、如何来寻找系统的瓶颈呢?可以利用下面的工具:
  1、top
  可以查看系统中运行的进程的状况,CPU使用状况,系统负载,内存使用等。它是检查系统进程运行状况最方便的工具了,它默认显示部分活动的进程,并且按照进程使用CPU的多少排序。它可以显示全部CPU的使用状况,也可以显示每个进程都运行在那个CPU上面。
  主要可以用top来看哪些进程或者那类进程占用CPU和内存资源最多,以此迅速定位存在性能问题的进程,以及运行异常的进程
  2、free
  free命令显示系统内存的使用状况(物理内存和交换内存)通过这个命令我们可以看到系统进程实际使用的物理内存,buffer和cache使用的物理内存
  3、vmstat
  vmstat是一个很全面的性能分析工具,可以观察到系统的进程状态、内存使用、虚拟内存使用、磁盘的IO、中断、上下问切换、CPU使用等。

vmstat是一个很全面的性能分析工具,可以观察到系统的进程状态、内存使用、虚拟内存使用、磁盘的IO、中断、上下问切换、CPU使用等。
  五、及时卸载不需要的服务
  在服务器操作系统安装时(默认安装),安装进程往往会自动安装不少的服务。而这些服务不少是在实际工作中用不到的内容。如在安装Windows服务器时,系统会自动安装DHCP服务、Telnet服务等等。这些服务跟大部分的信息化系统没有直接的关联。通常情况下,没有运行的必要。所以相对来说,就成为了垃圾。
  笔者建议,如果系统管理员具有比较雄厚的专业知识,那么在部署服务器操作系统时,最好选择自定义安装。只选择必需的服务进行安装。如果担心自定义安装出问题,那么在操作系统部署完毕之后,最好能够仔细清理一下操作系统所安装的服务。将那些不需要的服务及时的卸载掉。而且这项工作必须要持续的坚持下去。因为在以后的工作中,可能会在无意之中安装了某些服务。定时的检查,能够及时的发现这些不需要的服务,并进行及时的清理。

笔者建议,如果系统管理员具有比较雄厚的专业知识,那么在部署服务器操作系统时,最好选择自定义安装。只选择必需的服务进行安装。如果担心自定义安装出问题,那么在操作系统部署完毕之后,最好能够仔细清理一下操作系统所安装的服务。将那些不需要的服务及时的卸载掉。而且这项工作必须要持续的坚持下去。因为在以后的工作中,可能会在无意之中安装了某些服务。定时的检查,能够及时的发现这些不需要的服务,并进行及时的清理。
  五、合理使用缓存
  不合理使用缓存非但不能提高系统的性能,还会成为系统的累赘,甚至风险。
  频繁修改的数据
  如果缓存中保存的是频繁修改的数据,就会出现数据写入缓存后,应用还来不及读取缓存,数据就已经失效,徒增系统负担。一般来说,数据的读写比在2:1(写入一次缓存,在数据更新前至少读取两次)以上,缓存才有意义。
  没有热点的访问
  如果应用系统访问数据没有热点,不遵循二八定律,那么缓存就没有意义。
  数据不一致与脏读
  一般会对缓存的数据设置失效时间,一旦超过失效时间,就要从数据库中重新加载。因此要容忍一定时间的数据不一致,如卖家已经编辑了商品属性,但是需要过一段时间才能被买家看到。还有一种策略是数据更新立即更新缓存,不过这也会带来更多系统开销和事务一致性问题。
  缓存可用性
  缓存会承担大部分数据库访问压力,数据库已经习惯了有缓存的日子,所以当缓存服务崩溃时,数据库会因为完全不能承受如此大压力而宕机,导致网站不可用。这种情况被称作缓存雪崩,发生这种故障,甚至不能简单地重启缓存服务器和数据库服务器来恢复。
  实践中,有的网站通过缓存热备份等手段提高缓存可用性:当某台缓存服务器宕机时,将缓存访问切换到热备服务器上。但这种设计有违缓存的初衷,缓存根本就不应该当做一个可靠的数据源来使用。
  通过分布式缓存服务器集群,将缓存数据分布到集群多台服务器上可在一定程度上改善缓存的可用性。当一台缓存服务器宕机时,只有部分缓存数据丢失,重新从数据库加载这部分数据不会产生很大的影响。
  缓存预热(warm up)
  缓存中存放的是热点数据,热点数据又是缓存系统利用LRU(最近最久未用算法)对不断访问的数据筛选淘汰出来,这个过程需要花费较长的时间。新系统的缓存系统如果没有任何数据,在重建缓存数据的过程中,系统的性能和数据库负载都不太好,那么最好在缓存系统启动时就把热点数据加载好,这个缓存预加载手段叫缓存预热。对于一些元数据如城市地名列表、类目信息,可以在启动时加载数据库中全部数据到缓存进行预热。
  缓存穿透
  如果因为不恰当的业务、或者恶意攻击持续高并发地请求某个不存在的数据,由于缓存没有保存该数据,所有的请求都会落到数据库上,会对数据库造成压力,甚至崩溃。一个简单的对策是将不存在的数据也缓存起来(其value为null)。
  七、保持服务器操作系统的干净
  在日常工作中我们往往会有这样的感受。将办公室整理的干干净净、有条理。需要用的东西不用费时间去寻找。这可以提高我们的办公效率。很多企业推行5S也是出于这方面的考虑。其实在服务器操作系统中也存在这种现象。我们自己也有这方面切身的体会。一个操作系统刚安装完毕后,性能比较好。但是等到运行个一到两年之后(没有安装新的信息化应用),如果维护不当的话,其性能可能会直线下降。这其中很大的一个原因,就是服务器操作系统没有以前那么干净了。为了优化服务器操作系统的性能,要保证操作系统的干净。
  如一些不需要安装的插件,最好不要安装。有些管理员在日常工作中可能需要使用服务器操作系统进行上网。而为了IE浏览器能够显示全部的功能,有些网站往往要求IE浏览器安装一些插件。如Flash播放器、身份验证工具等等。而这些插件往往对于信息化系统的正常运作没有直接的关系。反而可能会因为这些插件的存在,而给操作系统的运行带来负面的影响。特别是Flash播放器的稳定性不是很好,有时候会占用过多的系统资源。
  要保持服务器操作系统的干净。如在日常工作中,不要在服务器操作系统上进行不必要的操作。包括测试、浏览网页等等。通常情况下,如果服务器操作系统占有污点的话,就很难再清洗干净。就好像水一样,越洗越脏。
  以上的招数只是针对大多数,大家都了解到了吗!更多内容就在编程学习网哟~

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何优化服务器的性能?

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何优化服务器的性能?

应用服务器就是处理网站业务的服务器,网站的业务代码都部署在这里,是网站开发最复杂,变化最多的地方,优化手段主要有缓存、集群、异步等。以上只是针对大多数,更多资讯,就在编程学习网
如何优化服务器的性能?

Sphinx搜索性能优化与调试技巧分享(如何优化Sphinx搜索性能并处理常见问题?)

本文章分享了优化Sphinx搜索性能的技巧,包括选择正确字段类型、使用分词、创建索引、优化查询、使用缓存和调整配置。此外,还提供了处理常见Sphinx搜索问题的方法,如找不到查询结果、查询结果不准确、搜索速度慢、索引更新后查询失败和内存使用过高。最后,介绍了其他性能优化技巧,如使用SphinxQL、Sphinx过滤器、Sphinx插件和监控Sphinx性能。
Sphinx搜索性能优化与调试技巧分享(如何优化Sphinx搜索性能并处理常见问题?)

Elasticsearch分布式搜索中的查询优化策略(如何优化Elasticsearch分布式搜索的查询性能?)

Elasticsearch分布式搜索中的查询优化策略有助于提高性能。策略包括:分片和副本管理(分片数、副本数)索引设置优化(映射、字段数据、_all字段禁用)查询优化(过滤器、布尔查询、范围查询)分词和排序优化(分词器选择、排序脚本)查询缓存(减少重复查询开销)其他优化(热分片、异步查询、监控和调整)
Elasticsearch分布式搜索中的查询优化策略(如何优化Elasticsearch分布式搜索的查询性能?)

Xunsearch搜索中的查询优化与结果排序(如何优化Xunsearch的查询性能并控制结果排序?)

本文介绍了Xunsearch搜索中的查询优化和结果排序,包括索引优化、查询重写、缓存、分页、相关性得分、自定义排序、权重、过滤器、地理位置排序和排序优化。通过优化查询性能和控制结果排序,可以提高搜索效率和结果质量,为用户提供更好的搜索体验。
Xunsearch搜索中的查询优化与结果排序(如何优化Xunsearch的查询性能并控制结果排序?)

Elasticsearch分布式搜索性能优化技巧(如何提升Elasticsearch分布式搜索性能?)

本文介绍了优化Elasticsearch分布式搜索性能的技巧,包括集群配置优化、查询优化、索引优化、硬件优化、监控和性能调整、其他技巧等方面。通过优化节点类型、分片数量、查询类型、过滤器、索引设置、分词器、倒排索引、词典、硬件性能、监控指标、分析工具和外部搜索引擎的使用,可以显著提升Elasticsearch的搜索性能。
Elasticsearch分布式搜索性能优化技巧(如何提升Elasticsearch分布式搜索性能?)

如何优化Solr搜索性能以提高查询效率?(提升Solr搜索性能有哪些策略?)

优化Solr搜索性能策略涉及优化查询(使用相关查询参数、范围查询、短语查询和查询分析器)、优化索引(合理使用分片、选择合适的字段类型、启用复制因子和定期优化索引)、优化Solr配置(调整查询参数、启用索引缓存、优化并发和使用优化器)、优化硬件环境(使用高速存储、增加内存、使用多核CPU和优化网络配置)以及其他优化策略(使用实时获取、采用渐进式分页、使用faceting、监控和调整)。这些策略旨在提高查询相关性、减少查询时间并确保最佳搜索体验。
如何优化Solr搜索性能以提高查询效率?(提升Solr搜索性能有哪些策略?)

Elasticsearch分布式搜索引擎的硬件选型与性能调优(Elasticsearch分布式搜索的硬件如何选择和性能如何调优?)

Elasticsearch分布式搜索引擎的硬件选型和性能调优硬件选型:选择高速CPU、充足内存、快速存储设备、高带宽网络。性能调优:优化索引设置、启用压缩、监控和调整、优化查询、使用缓存、调整分片分配。其他考虑因素:JVM调优、网络优化、定期维护。
Elasticsearch分布式搜索引擎的硬件选型与性能调优(Elasticsearch分布式搜索的硬件如何选择和性能如何调优?)

Solr搜索的硬件选型与性能调优建议(Solr搜索的硬件如何选择并进行性能调优?)

本篇指南详细介绍了Solr搜索的硬件选型和性能调优建议。硬件选型方面,包括选择合适的服务器类型、磁盘类型和网络配置。性能调优涉及优化索引结构、调整JVM内存设置、使用缓存、启用熔断机制和定期监控与调整。此外,文中还提供了其他性能调优技巧,例如优化查询语句、使用分组功能和考虑使用SolrCloud部署。
Solr搜索的硬件选型与性能调优建议(Solr搜索的硬件如何选择并进行性能调优?)

Solr搜索中的错误排查与性能调优方法(如何排查Solr搜索中的错误并进行性能调优?)

Solr搜索中的错误排查与性能调优指南。错误排查:检查日志文件验证查询和文档使用调试信息重现问题性能调优:分析查询性能优化复制因子启用索引时间优化使用DocValues创建过滤器缓存利用分片调整线程池使用缓存监控查询执行定期重新索引
Solr搜索中的错误排查与性能调优方法(如何排查Solr搜索中的错误并进行性能调优?)

Solr搜索的扩展性与定制化开发实践(如何扩展和定制Solr搜索功能?)

Solr是一款可扩展、可定制的高级搜索平台。通过扩展其架构,包括复制、分片和集合,以及扩展其功能,如自定义分词器、过滤器和查询处理器,可以提升Solr的固有能力。此外,定制化的开发实践,如利用SolrJ、Velocity模板和自定义请求处理器,可进一步增强Solr的功能。通过遵循最佳实践,例如性能优化、可扩展性规划、代码重用和单元测试,可以确保扩展和定制的可靠性。这些实践使开发者能够创建强大的、灵活的搜索解决方案,以满足各种应用程序需求。
Solr搜索的扩展性与定制化开发实践(如何扩展和定制Solr搜索功能?)

编程热搜

  • Mysql分表查询海量数据和解决方案
    众所周知数据库的管理往往离不开各种的数据优化,而要想进行优化通常我们都是通过参数来完成优化的。那么到底这些参数有哪些呢?为此在本篇文章中编程学习网笔者就为大家简单介绍MySQL,以供大家参考参考,希望能帮助到大家。以上就是关于大数据的知识点了。喜欢的可以分享给你的朋友,也可以点赞噢~更多内容,就在编程学习网!
    Mysql分表查询海量数据和解决方案
  • 大数据的妙用及17年趋势
    2017年,支持大量结构化和非结构化数据的系统将继续增长。市场需要数据平台来帮助数据管理人员管理和保护大数据,同时允许最终用户进行数据分析。这些系统将逐步成熟,在企业内部的IT系统中更好地运行。所以,我们更要了解大数据!互联网普及使得网民的行为更加多元化,通过互联网产生的数据发展更加迅猛,更具代表性。互联网世界中的商品信息、社交媒体中的图片、文本信息以及视频网站的视频信息,互联网世界中的人与人交互信息、位置信息等,都已经成为大数据的最重要也是增长最快的来源。大家都了解到了吗!更多内容就在编程学习网哟
    大数据的妙用及17年趋势
  • 5G大数据时代空降来袭
    欢迎各位阅读本篇文章,本文主要讲了5G大数据时代。如今 5G 概念已不再陌生,按照行业认同的说法:2017年至2018年 5G 将在国内开始有序测试,2019年进行预商用。工信部之前已表示,中国将在2020年启动 5G 商用。编程学习网教育平台提醒各位:本篇文章纯干货~因此大家一定要认真阅读本篇文章哦!
    5G大数据时代空降来袭
  • es详解-原理-从图解构筑对es原理的初步认知
    在学习ElasticSearch原理时,我推荐你先通过官方博客中的一篇图解文章(虽然是基于2.x版本)来构筑对ES的初步认知(这种认识是体系上的快速认知)。ES详解 - 原理:从图解构筑对ES原理的初步认知前言图解ElasticSearch图解LuceneSegmentInverted IndexStored Fiel
    es详解-原理-从图解构筑对es原理的初步认知
  • elasticsearch-wrapperquery
    在工作中遇到ElasticSearch版本升级时出现Java High Level接口变更导致的兼容性问题: 之前使用的是2.4.x,考虑性能和功能的增强,需要更换为6.4.x; 2.4.x中我们使用DSL语句直接查询(数据的不确定性和方便动态建立查询规则等因素),而新的ES Java 高阶API中去掉了相关接口的支持
    elasticsearch-wrapperquery
  • 学习大数据营销思维(下)
    编程学习网: 其实,通过上面的介绍,我们知道苹果通过各类产品与服务销售相互促进以理及薄利多销的方式来盈利第二种战略联盟类型是合作方的共同赢利。苹果公司打造了一个参与方共同受益的业务系统。
    学习大数据营销思维(下)
  • 纯干货:HLS 协议详解及优化技术全面解析
    编程学习网:HLS (HTTP Live Streaming), 是由 Apple 公司实现的基于 HTTP 的媒体流传输协议。他跟 DASH 协议的原理非常类似,通过将整条流切割成一个小的可以通过 HTTP 下载的媒体文件,然后提供一个配套的媒体列表文件给客户端,让客户端顺序地拉取这些媒体文件播放, 来实现看上去是在播放一条流的效果。HLS 目前广泛地应用于点播和直播领域。
    纯干货:HLS 协议详解及优化技术全面解析
  • 关于Python 代码全面分析
    欢迎各位阅读本篇,Python(KK 英语发音:/ˈpaɪθən/)是一种面向对象、直译式计算机程序设计语言。本篇文章讲述了关于Python 代码全面分析。
    关于Python 代码全面分析
  • es详解-原理-es原理之索引文档流程详解
    ElasticSearch中最重要原理是文档的索引和文档的读取,本文带你理解ES文档的索引过程。ES详解 - 原理:ES原理之索引文档流程详解文档索引步骤顺序单个文档多个文档文档索引过程详解整体的索引流程分步骤看数据持久化过程深入ElasticSearch索引文档的实现机制写操作的关键点Lucene的写Elastics
    es详解-原理-es原理之索引文档流程详解
  • 五大“网管”必备的网络数据分析工具
    是不是在为如何分析统计网络数据和流量烦恼呢?想不想监控、运维、排障轻松一些?下面给大家提供一些免费网络分析工具,以帮助大家更好的掌控自己的网络!编程学习网教育
    五大“网管”必备的网络数据分析工具

目录