要怎么优化服务器?

要怎么优化服务器?,第1张

一、磁盘整理
一般来说,刚安装好 Windows 2000后的十几天里,你会觉得运作的速度和性能都很令人满意。不过好景不长,某一天的某个时候,你就会突然发现计算机爬得比蜗牛还慢,在随便打开个档案时硬盘却跑得跟蚂蚁走一样。其实真正的原因在于档案区段过度分散,这也是谋杀 Windows 2000 性能的头号凶手。
Windows 2000 跟其它的 *** 作系统一样,并不会把档案以连续的形式存在硬盘上,而是散得到处都是,所以如果你的档案片段非常分散,你的硬盘就得花很多时间才能读取一个档案。这个问题和磁盘整理的重要性都常常被忽略,却常是吞噬Windows 2000 性能的罪魁祸首。所以改善系统性能的首要工作,就是磁盘整理。整理以后最多可以加快一倍的处理速度,不过一般都是加快一半的速度。
Windows NT 没有磁盘整理工具,但是 2000 就有 Executive Software 提供好用的 Diskeeper 程序。到「开始」工作列,等菜单展开后选取"程序 o 附件 o 系统工具 o 磁盘整理工具"。然后在最上面的控制面版选择你要检查的硬盘代号,接着按下「分析」。计算机会检查磁盘驱动器,告诉你是否需要整理。如果真的需要整理,只要用鼠标再按一次就可以开始整理工作了。
朋友应该时常整理硬盘,至于整理的频率就要看服务器硬盘有多忙。如果你想表排时间定期整理,必须要有 Diskeeper这个程序的完整版才行,不然可以用其它厂牌的磁盘整理工具,譬如 Raxco Software 出品的 PerfectDisk 2000。这个软件功能非常强大,可以主动整理你的硬盘。
二、优化你的服务器
作个为局域网的主机,你存储档案的服务器每天都得承受无情的摧残。访问者增删或修改档案,所存取的资料量少说也有好几MB,甚至以GB计。如果想知道服务器每天受了多少委屈,你可以利用 Windows 2000 的「性能」公用程序来检测档案服务器的性能。你可以定期检视,得出统计图来找出服务器工作的流动量消长(「性能」程序的详细使用方法请参考 Windows 2000 Server Resource Kit)。
Windows 2000 有一项功能可以马上减轻服务器的负荷,可是一般人却没想到这一点,就是「离线档案」功能。其实正式的名称应该是「客户端快取」,不过这个功能不是用来加速 *** 作系统执行性能的,可是使用者却可以用来改善网络的速度。我们知道服务器的CPU 会把某些工作指示快取到内存,以便加速执行性能;Windows 2000 会把资料快取到内存里,以便加速硬盘执行性能。客户端快取则是以类似的概念把网络资料快取到客户端的硬盘上,以降低网络流量。虽然这样并不能真的促进服务器的性能,但是因为本地端快取的关系,所以网络的使用者可以发觉网络速度变快,也因为整体网络的负荷量减轻,所以服务器比较能处理其它的工作。
那么如何使用这个功能呢?
(1) 一个步骤当然是启动全公司系统的客户端快取功能。在群组原则中把离线档案的客户端快取功能打开。除了开启这个功能外,还可以把使用者存到网络上的档案也快取一份到本地端,然后 Windows 2000 会直接使用本地端的这份快取档案,除非档案有所更动。
(2) 第二步是启动每一个共享资料夹的客户端快取功能。在档案总管里共享的文件夹上按鼠标右键点选「共享」选项,然后按「快取处理」,之后会有三个选择:手动快取文件。使用者必须告诉计算机要让文件在离线以后也可以使用。如果你只想让 Windows 2000 对使用者在网络上制作的档案进行快取工作,就要选这个设定。
(3) 自动快取文件。如果共享的数据夹内的数据常常变动,最好就选这个选项。如果使用者开启这个共享资料夹的文件,Windows 2000 就会自动快取到本地端,这样一来就算服务器离线,档案仍然可以用。不过这个选项对性能没有助益。
(4) 自动快取程序。这个选项对里面有只读数据的共享数据夹最有用。如果使用者打开这个资料夹的档案,Windows 2000 会自动快取到本地端,除非服务器端的档案版本比较新。这就是你能节省频宽的地方。
三、增加内存
微软的 Office 2000 可能是在Windows 2000网络中最常执行的应用程序,可是内存不足也是影响 Office 2000 执行性能的首因之一。但只要有充足的内存,大部分程序的执行性能都会改善。
所以解决方法当然是多买几条内存。但是到底要多少?首先必须知道 Windows 2000 需要多少内存。微软的官方说法是 Windows 2000 只需要 64MB 就可以动,不过我建议至少要有 96MB。另外如果要同时跑好几个 Office 程序,那么每执行一个 Office 程序就要多加 4MB;Access 和 Outlook 要另计,因为这两个程序更耗内存,所以要多加 8MB。举个例子,如果你们公司的使用者要同时执行 Word、Excel 和 Outlook,那么计算机里至少要有 96MB + 4MB + 4MB + 8MB = 112MB 的内存,所以买的时候要买 128MB。
如果朋友不想花那个钱买内存,这个时候可能就要用优化内存的软件来协助解决内存不足的问题,不过效果没那么显著。
四、删除不需要的功能
Windows 2000 因为影响执行能力、消耗存储器的主要原因就是安装了太多不必要的功能。例如 Computer Browser 这项功能对于台式计算机其实是不必要的。这个服务的功能在于记录网络上有哪些计算机,再把这份清单提供给其它计算机。大部分的公司都是让服务器执行这项功能,而不是台式计算机。
想知道可以关闭哪些功能,唯一的方法就是直接看功能清单,然后看看关闭这些功能后有什么影响。在「功能」的控制面板有每项功能的简短说明做为参考。到「控制面板」选择"系统管理工具/功能"。Windows 2000 预设开机时启动某些后台程序的功能,但有很多根本不是每天都要用到的。不过在把某项功能完全停用之前,最好在「启动类型」那一栏把那项功能改设成「手动」,这样子真的需要时就可以重新启动这项服务。
五、加速登录
你登录Windows 2000 时,「开始」工作菜单应该只要几秒钟就会出现,关机注销也应该是差不多时间。可是如果你的计算机上有太多使用者的设定文档,开关机的动作就会像老牛拖破车。这是因为使用者设定文件资料之故。如果你增加自己专属的使用者文件,开关机时间会更久。
微软为此开发了很好用的修正程序,叫做:「数据夹重新导向」。资料夹重新导向功能会把文件和设定移出使用者的设定档,然后集中存放在网络上。这样一来 Windows 2000 在使用者登录的时候需要下载的资料量就少了很多,登录时间自然大幅缩短。
要开启这个功能必须使用群组原则。选择"使用者设定 o Windows 设定 o 资料夹重新导向",然后在以下列出的项目上按下鼠标右键,重新导引同名的资料夹:
(1) 用程序资料
(2) 桌面
(3) 我的文档
(4) 「开始」菜单
资料夹重新导向还有一个好处,就是可以简化文件备份的手续,因为所有文件都放在同一个地方。不过最大的挑战是在教育使用者把他们的文件都存放在「我的文件夹」里。
不过你得花点时间学习资料夹重新导向功能每个选项的意思,还要看看 resource kit 里面有哪些执行这个功能的最佳方法。不过一般说来,预设设定提供的就是最好的方法。
六、驱动程序的升级
加强 Windows 2000 执行性能的基本功就是要时时更新。 Windows 2000 内建的驱动程序不一定是最好的,所以你要把各项设备的驱动程序时时更新,或是安装最新版的 Windows 2000 组件。好好利用 Windows Update这个功能,时时与硬件厂商保持联系,让你的驱动程序保持在最新的状态。

1、优化
首先,你需要优化你网站上的,来获得丝毫加速网站的机会。从原图上移除额外的注解、不必要的空间和无用的颜色,将保存为JPEG格式,因为它即使占用空间小,也能保证的高质量。
对于WordPress网站,建议使用smushit插件来自动优化网站的。如果是PNG格式,可以使用tinypng 优化,提高质量。
2、开启GZip压缩
GZip压缩听起来很复杂,但实际上很简单,被用于减少>

在开始演示之前,我们先介绍下两个概念。

概念一,数据的可选择性基数,也就是常说的cardinality值。

查询优化器在生成各种执行计划之前,得先从统计信息中取得相关数据,这样才能估算每步 *** 作所涉及到的记录数,而这个相关数据就是cardinality。简单来说,就是每个值在每个字段中的唯一值分布状态。

比如表t1有100行记录,其中一列为f1。f1中唯一值的个数可以是100个,也可以是1个,当然也可以是1到100之间的任何一个数字。这里唯一值越的多少,就是这个列的可选择基数。

那看到这里我们就明白了,为什么要在基数高的字段上建立索引,而基数低的的字段建立索引反而没有全表扫描来的快。当然这个只是一方面,至于更深入的探讨就不在我这篇探讨的范围了。

概念二,关于HINT的使用。

这里我来说下HINT是什么,在什么时候用。

HINT简单来说就是在某些特定的场景下人工协助MySQL优化器的工作,使她生成最优的执行计划。一般来说,优化器的执行计划都是最优化的,不过在某些特定场景下,执行计划可能不是最优化。

比如:表t1经过大量的频繁更新 *** 作,(UPDATE,DELETE,INSERT),cardinality已经很不准确了,这时候刚好执行了一条SQL,那么有可能这条SQL的执行计划就不是最优的。为什么说有可能呢?

来看下具体演示

譬如,以下两条SQL,

A:

select from t1 where f1 = 20;

B:

select from t1 where f1 = 30;

如果f1的值刚好频繁更新的值为30,并且没有达到MySQL自动更新cardinality值的临界值或者说用户设置了手动更新又或者用户减少了sample page等等,那么对这两条语句来说,可能不准确的就是B了。

这里顺带说下,MySQL提供了自动更新和手动更新表cardinality值的方法,因篇幅有限,需要的可以查阅手册。

那回到正题上,MySQL 80 带来了几个HINT,我今天就举个index_merge的例子。

示例表结构:

mysql> desc t1;+------------+--------------+------+-----+---------+----------------+| Field      | Type         | Null | Key | Default | Extra          |+------------+--------------+------+-----+---------+----------------+| id         | int(11)      | NO   | PRI | NULL    | auto_increment || rank1      | int(11)      | YES  | MUL | NULL    |                || rank2      | int(11)      | YES  | MUL | NULL    |                || log_time   | datetime     | YES  | MUL | NULL    |                || prefix_uid | varchar(100) | YES  |     | NULL    |                || desc1      | text         | YES  |     | NULL    |                || rank3      | int(11)      | YES  | MUL | NULL    |                |+------------+--------------+------+-----+---------+----------------+7 rows in set (000 sec)

表记录数:

mysql> select count() from t1;+----------+| count() |+----------+|    32768 |+----------+1 row in set (001 sec)

这里我们两条经典的SQL:

SQL C:

select from t1 where rank1 = 1 or rank2 = 2 or rank3 = 2;

SQL D:

select from t1 where rank1 =100  and rank2 =100  and rank3 =100;

表t1实际上在rank1,rank2,rank3三列上分别有一个二级索引。

那我们来看SQL C的查询计划。

显然,没有用到任何索引,扫描的行数为32034,cost为324365。

mysql> explain  format=json select from t1  where rank1 =1 or rank2 = 2 or rank3 = 2\G 1 row EXPLAIN: {  "query_block": {    "select_id": 1,    "cost_info": {      "query_cost": "324365"    },    "table": {      "table_name": "t1",      "access_type": "ALL",      "possible_keys": [        "idx_rank1",        "idx_rank2",        "idx_rank3"      ],      "rows_examined_per_scan": 32034,      "rows_produced_per_join": 115,      "filtered": "036",      "cost_info": {        "read_cost": "323207",        "eval_cost": "1158",        "prefix_cost": "324365",        "data_read_per_join": "49K"      },      "used_columns": [        "id",        "rank1",        "rank2",        "log_time",        "prefix_uid",        "desc1",        "rank3"      ],      "attached_condition": "((`ytt``t1``rank1` = 1) or (`ytt``t1``rank2` = 2) or (`ytt``t1``rank3` = 2))"    }  }}1 row in set, 1 warning (000 sec)

我们加上hint给相同的查询,再次看看查询计划。

这个时候用到了index_merge,union了三个列。扫描的行数为1103,cost为44109,明显比之前的快了好几倍。

mysql> explain  format=json select /+ index_merge(t1) / from t1  where rank1 =1 or rank2 = 2 or rank3 = 2\G 1 row EXPLAIN: {  "query_block": {    "select_id": 1,    "cost_info": {      "query_cost": "44109"    },    "table": {      "table_name": "t1",      "access_type": "index_merge",      "possible_keys": [        "idx_rank1",        "idx_rank2",        "idx_rank3"      ],      "key": "union(idx_rank1,idx_rank2,idx_rank3)",      "key_length": "5,5,5",      "rows_examined_per_scan": 1103,      "rows_produced_per_join": 1103,      "filtered": "10000",      "cost_info": {        "read_cost": "33079",        "eval_cost": "11030",        "prefix_cost": "44109",        "data_read_per_join": "473K"      },      "used_columns": [        "id",        "rank1",        "rank2",        "log_time",        "prefix_uid",        "desc1",        "rank3"      ],      "attached_condition": "((`ytt``t1``rank1` = 1) or (`ytt``t1``rank2` = 2) or (`ytt``t1``rank3` = 2))"    }  }}1 row in set, 1 warning (000 sec)

我们再看下SQL D的计划:

不加HINT,

mysql> explain format=json select from t1 where rank1 =100 and rank2 =100 and rank3 =100\G 1 row EXPLAIN: {  "query_block": {    "select_id": 1,    "cost_info": {      "query_cost": "53434"    },    "table": {      "table_name": "t1",      "access_type": "ref",      "possible_keys": [        "idx_rank1",        "idx_rank2",        "idx_rank3"      ],      "key": "idx_rank1",      "used_key_parts": [        "rank1"      ],      "key_length": "5",      "ref": [        "const"      ],      "rows_examined_per_scan": 555,      "rows_produced_per_join": 0,      "filtered": "007",      "cost_info": {        "read_cost": "47884",        "eval_cost": "004",        "prefix_cost": "53434",        "data_read_per_join": "176"      },      "used_columns": [        "id",        "rank1",        "rank2",        "log_time",        "prefix_uid",        "desc1",        "rank3"      ],      "attached_condition": "((`ytt``t1``rank3` = 100) and (`ytt``t1``rank2` = 100))"    }  }}1 row in set, 1 warning (000 sec)

加了HINT,

mysql> explain format=json select /+ index_merge(t1)/ from t1 where rank1 =100 and rank2 =100 and rank3 =100\G 1 row EXPLAIN: {  "query_block": {    "select_id": 1,    "cost_info": {      "query_cost": "523"    },    "table": {      "table_name": "t1",      "access_type": "index_merge",      "possible_keys": [        "idx_rank1",        "idx_rank2",        "idx_rank3"      ],      "key": "intersect(idx_rank1,idx_rank2,idx_rank3)",      "key_length": "5,5,5",      "rows_examined_per_scan": 1,      "rows_produced_per_join": 1,      "filtered": "10000",      "cost_info": {        "read_cost": "513",        "eval_cost": "010",        "prefix_cost": "523",        "data_read_per_join": "440"      },      "used_columns": [        "id",        "rank1",        "rank2",        "log_time",        "prefix_uid",        "desc1",        "rank3"      ],      "attached_condition": "((`ytt``t1``rank3` = 100) and (`ytt``t1``rank2` = 100) and (`ytt``t1``rank1` = 100))"    }  }}1 row in set, 1 warning (000 sec)

对比下以上两个,加了HINT的比不加HINT的cost小了100倍。

总结下,就是说表的cardinality值影响这张的查询计划,如果这个值没有正常更新的话,就需要手工加HINT了。相信MySQL未来的版本会带来更多的HINT。

网速慢的几种原因:
一、网络自身问题(服务器带宽不足或负载过大)
二、网线问题导致网速变慢(双绞线不合规格,表现为:一种情况是刚开始使用时网速就很慢
;另一种情况则是开始网速正常,但过了一段时间后,网速变慢)
三、网络中存在回路导致网速变慢
四、网络设备硬件故障引起的广播风暴而导致网速变慢
五、网络中某个端口形成了瓶颈导致网速变慢
六、蠕虫病毒的影响导致网速变慢
七、防火墙的过多使用
八、系统资源不足
网速慢主要是有以上的原因造成的,个人建议你,先清理一下电脑的垃圾进程,优化一下系统,还
有木马也是一个害虫!
★版权申明:本答案为/tp人韦/aiq原创,任何人不得盗用,谢谢合作!★
解决方法:
一、请换个时间段再上或者换个目标网站。
二、检查双绞线是否合格。
三、用分区分段逐步排除的方法,排除回路故障。
四、DOS下用 “Ping”命令对所涉及计算机逐一测试,网卡、集线器以及交换机是最容易出故
障引起网速变慢的设备。
五、更换服务器网卡为100M或1000M、安装多个网卡、划分多个VLAN、改变路由器配置来增加
带宽等。
六、必须及时升级所用杀毒软件;计算机也要及时升级、安装系统补丁程序,同时卸载不必要
的服务、关闭不必要的端口,以提高系统的安全性和可靠性。
能解决这些问题,你的网速就快了!

WEB服务器的优化方法简介

在对Web服务器进行优化时要根据真实的Web应用系统的情况和特征来采取有针对性地优化方案。首先根据不同的网络特性来看:在局域网中,降低M T U (最大传输单位)值对可以避免复制数据和求校验,而通过优化select系统调用或在Socket事件处理器中执行计算可以优化请求并发管理,利用>

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10275039.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-07
下一篇 2023-05-07

发表评论

登录后才能评论

评论列表(0条)

保存