服务器速度慢有哪些原因?

写这篇文章主要是在昨天晚上一个客户找我说他服务器添加文章速度慢,大概需要等待几秒钟。

Windows 2008标准版 64位

E3-1230处理器

16G内存

1T硬盘

当时进去检查系统各项软硬件都是正常的,网络连接也没有问题。然后在第二天处理时候,顺手在控制面板设置了电源模式为“高性能”模式。让客户测试,测试结果完全正常了。

事后分析主要原因在于,Windows电源管理可以直接控制硬盘的转速。系统安装好一般默认的选项是“平衡”此种模式在系统不需要大量读写硬盘时会显著降低硬盘的转速以节能并且延长硬盘寿命。

设置地址:开始-控制面板-电源管理-高性能

Windows电源管理
Windows电源管理

下图为磁盘健康检测

 

硬盘检测
硬盘检测

一般来说速度慢除了设置原因还有以下几种:

1.网络连接速度

2.磁盘健康问题

3.服务器性能低

4.安全防护软件拖慢处理速度

还有许多未知原因,具体情况需要具体排查。问题千种万种,我们只需要按照现象去找本质原因即可。

关于网站服务器的CC防护,你需要知道的事

网站服务器的CC防护这里分为两种情况来说

一种是网站域名直接解析到服务器IP上。

一种是域名解析到CDN上,CDN上设置源站IP为服务器IP。

一、首先说第一种直接解析源站IP。这种一般可以选择的操作比较多。主要有以下几个方式。

1.开启服务器机房的防护。一般服务器所在机房都有硬件防火墙,防护CC的效果比较好。这是最推荐的方式。缺点是可能会造成部分误封,操作不方便不能随意调整。

2.服务器内安装安全防护软件,如安全狗、云锁等。这种方式适合应对中小型CC攻击。可以有效的拦截攻击流量,并且防护策略可以根据攻击情况自己手动随时调整。

软件防护可操作空间比较大,下面再说几点:

软件防护可以开启自动处理规则,这类规则一般比较宽松。更高的就是根据来源、UA等进行判断自动处理。还可以让访客参与验证来防护CC,常见的方式是访客第一次访问时需要输入验证码访问、或者是访问时有5秒自动的安全验证来防护CC。这个安全验证主要是自动检测访客的来源、系统版本、浏览器等等来判断是否是正常访客。同时五秒的验证时间也阻止了同一IP大量频繁的向服务器发送请求。

二、第二种解析到CDN,CDN里选择填入源站IP的方式。

使用CDN的朋友需要特别注意。

因为CDN除了缓存常用资源之外,其他的资源请求也会通过CDN的节点来转发给服务器,服务器返回给CDN,CDN再返回给访客。相当于有个代理的作用。

这时候服务器开启CC防护因为CDN的大量请求,就可能把CDN的节点IP当作CC攻击者的IP。

有些CDN具有CC防护(WAF安全)的功能,可以设置防护规则,一些则是没有防护设置。比如腾讯云CDN,就没有任何安全设置。

有使用CDN,就只能在CDN上进行CC防护。

CDN有安全设置就可以在CDN上进行防护;

如果CDN上没有防护功能,还只能用CDN的话,就换个有防护的。不然只能挨打。

 

解释:

如果服务器将CDN节点加白名单,则所有CC攻击都会通过CDN的节点直接打入服务器。

如果不加白名单,服务器做安全设置因为请求频繁切很多是非法请求就会拦截CDN的IP。

CDN的IP大部分都不会公开,并且IP是动态会变动的。比如腾讯云:如下图

腾讯云CDN工单
腾讯云CDN工单

linux服务器使用宝塔面板的基本安全设置

最近这几天经常听到人说自己服务器被暴力破解SSH密码。

所以专门写个基本的安全设置教程给大家。

使用环境:

linux系列服务器

宝塔linux面板

首先宝塔面板安装好后,我们需要做的就是端口安全设置。

宝塔linux面板默认端口是8888

然后网站使用80端口

https/SSL使用443端口

linux服务器SSH默认使用22端口

FTP服务默认使用21端口

以上这几个端口是我们经常使用的。

我们首先把除了这几个端口之外的全部删掉。

防止SSH暴力破解可以直接禁用SSH连接,不经常使用SSH可以直接删除22端口(或者你设置的其他SSH端口号)

个人习惯启用禁ping。

设置好后如下图。

linux服务器安全设置

宝塔默认的8888端口也是可以修改的,在面板设置里,修改前先在安全设置里增加要设置的端口,防止改后登录不上宝塔面板。

修改了默认的8888端口后,就可以直接将8888端口删掉。

美国100M独享服务器下载速度能达到多少?

很多人选择美国的服务器来租用,主要原因在于美国的服务器带宽大、配置高,价格便宜。一般美国的服务器都是100M百兆独享起步。

同时很多用户买了之后发现个问题,怎么我的百兆独享实际用起来单线程只有几兆的速度的?

必须多线程才能跑出来速度。这究竟是什么原因?服务商是不是在坑我?

其实主要原因还是历史问题,国内互联网发展慢,在国际互联网上的话语权还是比较低的。我们到美国的国际直连海底光钎一共都没多大,到了晚上高峰期或者有大流量攻击时候网络访问速度自然就慢。

中美IP路由图

因为以上各种原因,联邦在线特推出中美GIA直连线路,拥有独立的回国线路。带宽独享满速使用。

现正在进行活动

E3-1230v4/16G/1T/5IP/100M独享 800元/月

促销页面:https://www.homedt.cn/huodong

记一次Windows 2008+PHP+mysql环境配置搭建

目标主机环境:

Windows 2008 x64 R2

 

护卫神安装php+mysql

使用IIS7.5

IIS开启内容压缩,以及Rewrite伪静态插件。

首先刚做好系统,直接下载要使用的程序:

护卫神PHP套件PHP5.6版本:http://down.huweishen.com/free/phpwebFcgi56.zip

IIS7.5  Rewrite伪静态插件:http://download.microsoft.com/download/E/A/9/EA9F19BC-0EEB-49C9-B32D-56852BBE56DA/rewrite_amd64_zh-CN.msi

下载完成后我们直接打开压缩包安装,一路下一步即可。

 

护卫神安装
护卫神安装

护卫神安装完成之后他会自动将IIS一起安装。

IIS7.5
IIS7.5

我们那首先需要对IIS作的设置就是开启内容压缩。

打开服务器管理器-角色-web服务器-添加角色服务

我是已经提前安装完毕,所以这里是灰色的,未安装的直接选择上一路下一步即可。

动态内容压缩
动态内容压缩

安装完成后我们需要对内容压缩做一些设置

将默认的数值改为256,这样压缩率更高,更改后在右侧点击应用。

网页压缩设置
网页压缩设置

下面就是伪静态插件的安装。我们将下载来的伪静态插件打开一路下一步安装即可。

至此整个服务器环境基本配置完成。

虚拟主机、VPS云服务器、独立服务器等分别是什么?有什么区别?

VPS是什么?
VPS,全称Virtual Private Server。中文名叫虚拟专用服务器,VPS是一种涵盖所有结构将一台物理服务器分割成多个虚拟专用服务器的技术总称,然而为了方便我们很多时候都把VPS当成一个单位。VPS实际上我们可以基本认为是能提供完整服务的服务器,与我们常说的虚拟机为同种东西,只不过VPS是在服务器领域的称呼。当然我也不想说什么深入的虚拟化技术,毕竟这是一篇新手教程。但我们可以确定的一点是,现在的网站和应用很多都是运行在VPS上。VPS的好处有什么呢?首先就是成本。由于VPS技术的成熟,让我们搭建网站与应用的成本大幅度降低。毕竟不是人人都有那个需要去租用独立服务器的。

所有的云计算IDC商家提供的各种各样名称的服务器也都是基于VPS技术,例如什么阿里云的ECS腾讯云的CVM总之有着各种各样的名称。当然VPS架构也有着不同的分别,像是Xen,KVM,VMCloud等等这些都属于常见虚拟化架构,这里不得不提的是可能我们经常见到的一种叫做OpenVZ架构的VPS。OpenVZ准确来说其实是一种容器技术而不是标准意义上的虚拟化,然而与其他容器技术不一样的地方是OpenVZ在网络管理方面又显得较为细致。具体几种架构的介绍将在下面逐一介绍。

然而我们在购买VPS的时候,不得不清楚的一点就是,几乎所有的IDC都存在超售的现象。什么是超售?顾名思义就是IDC出售超过物理资源总量的VPS资源。这也就导致了不同VPS在使用体验上也有较大的差异,尤其是在一些中小型IDC中,VPS超售现象极其严重,导致物理服务器严重超负荷,轻则只是VPS的性能大受影响导致性能低下,重则物理服务器宕机,无法提供任何服务。

下面我将会介绍一些常见的VPS架构。

1. OpenVZ

首当其冲的要介绍的就是OpenVZ,因为他实在是太常见了。但从技术角度上来说,OpenVZ并不是真正意义上的虚拟化技术,OpenVZ实际上是一种容器技术。由于在网络管理方面提供了比其他容器技术更高的定制性所以我们经常能把他当成一个VPS技术。OpenVZ这种技术有什么特点?先从技术角度来说的话,OpenVZ最显著的特点就是他只能跑Linux,且无法更改Linux的Kernel。因为系统底层都是追随母机的Kernel,所以无法进行一些深度的修改。OpenVZ常见的应用就是拿来跑各种各样的程序与应用。

当然这是技术角度的差别,对于一般人来说OpenVZ有什么很显著的特点?当然有,我们一般人对OpenVZ的印象就是:低价,资源给的多,不能装Windows不能装锐速。为什么大多数IDC出售的OpenVZ都是资源给的多价格又很低的呢?其实买了OpenVZ结构的VPS我们基本可以忽略那些所谓的参数,因为想调多少就能调多少,照成这种现象最根本的原因还是OpenVZ的超售难度非常低。很多IDC使用OpenVZ架构经常超售个200%,如此丧心病狂的超法我们也无可奈何,毕竟他们要赚钱。但更有些丧心病狂的缺德IDC大幅度超售内存CPU带宽资源也就算了,甚至连硬盘空间也大幅度超售,这是非常危险的做法,毕竟性能不行还可以用,空间超售了那数据可是无价的。

虽然各个IDC的做法给我们照成了一个OpenVZ很差的印象,然而我这里需要给大家纠正一点,OpenVZ并不烂。真正不超售的OpenVZ性能其实是所有虚拟化技术中最好的。虽然他自己并不是个虚拟化技术。

2. KVM

KVM是现在真正意义上最普及的虚拟化技术。几乎80%的IDC都使用了此结构。KVM的全称是Kernel-based Virtual Machine,意思就是基于内核的虚拟机。当然作为当今使用最广泛的虚拟化技术,KVM的优点也是非常的明显。KVM相比其他虚拟化技术(不包括OpenVZ),KVM拥有着更好的性能。KVM对于我们一般用户的特点也是很明显:价格适中,资源都中规中矩。能装Windows能装锐速。虽然这是一个很普及的技术然而我并不想太多介绍它,因为KVM现在已经成了VPS的标准,没什么好介绍的了。

当然,使用了KVM技术的母服务器有一点可以肯定的就是母机使用的肯定是Linux系统。KVM其实也是一种统称,具体的KVM还有分很多种,不过在使用上并没有什么太大区别。例如OpenStack KVM。

最后不得不说,KVM也是完全可以超售的。不管是硬盘还是CPU亦或者是带宽,KVM超售已经是轻车熟路。然而KVM在内存方面并不能像OpenVZ一样超的那么夸张,如果一个IDC允许装Windows的情况下,KVM的内存超售幅度差不多在25%~30%左右。总体来说KVM是无法像OpenVZ那样夸张的超售,但也并不是像外界所说的那样KVM不能超售。

3. Xen

Xen有两种虚拟化方式,Xen PV与Xen HVM。Xen技术历史悠久最早版本可以追溯到2003年,曾经Xen占据着VPS市场的半壁江山,然而在KVM技术成熟了之后逐渐被KVM淘汰。不过我们现在还是能见到很多国人IDC商家使用这种架构来出售VPS。那么Xen结构又是什么?

Xen PV(Xen Paravirtualization):

Xen PV是一种半虚拟化方案,Xen的半虚拟化有点类似于OpenVZ。什么是半虚拟化,如果把整个母机系统比喻成一件房子,那我们可以抽象的想象一下半虚拟化的意思就是水电都接在一个计量表上共用资源,相反如果水电都有分离计量的话就类似是全虚拟化。半虚拟化的Xen基本无法更改Kernel且只支持Linux,性能与OpenVZ整体类似。只是能超售的幅度并不如OpenVZ那样那么夸张。

Xen HVM (Xen Full Virtualization):

Xen HVM是一种真正意义上的完整虚拟化的虚拟机。当然,这种Xen我们一般能很轻松的分辨出来,因为它能装Windows等其他系统。Xen HVM的性能非常的中规中矩,如果与KVM进行对比的话性能确实是不如KVM。然而Xen HVM在超售方面并不像KVM那样有那么高的可调节自由度,起码内存是超不了多少的,毕竟不像KVM那样有智能内存调度机制。但Xen HVM依旧是可以超售的,内存超不了我们可以超CPU超硬盘超带宽啊!

4. VMware Cloud

简称VM Cloud。然而我们一看名字就知道这是哪家公司的产品。没错就是大名鼎鼎的VMware。由于VMCloud是商业产品商业授权,授权费高昂我们很少能见到有哪家IDC使用这种架构。这种结构我并不想多说因为我个人接触的非常少,且实际使用性能上并不如其他的虚拟化架构。最后要说的依旧是,超售。没错,在现在这时代,不能超售的虚拟化技术都已经被淘汰了。具体例子我们可以看看使用VMCloud的IDC,CAC。

综上所述,我们可以把几种VPS的性能都排列对比一下,如果都在不超售的情况下且使用的是Linux系统,那么性能排列大致如下:

OpenVZ ≈ Xen PV > KVM > Xen HVM ≈ VM Cloud
如果在使用Windows的情况下,那性能排行大致如下

KVM > Xen HVM > VM Cloud
当然上面都是在没超售的理论情况下,实际上我们能买到的VPS都有超售的情况。那么实际使用情况下的排行大致如下:

KVM > Xen PV > Xen HVM > VM Cloud > OpenVZ
独立服务器 Dedicated Server
独立服务器,一般我们常见的英文写法是Dedicated Server。独立服务器顾名思义就是资源完全独立的物理服务器。所有的独立服务器的硬件资源都是独享的,并不会像我们使用VPS那样如果长时间高占用CPU或者内存或者硬盘IO资源就很有可能被IDC停机封号的情况。独立服务器我们常见的有塔式服务器,1U、2U、4U、6U的机架式服务器,还有各式各样的刀片类服务器。那么我们又要回到一个问题上,独服能超售吗?我的回答依旧是,可以。独服的超售一般都集中在机房网络带宽上,比如一个机房的总接入带宽是1Gbps,然而他卖出了500台1Gbps带宽的独服,这样就是一种常见的独服超售方式。所以我们几乎都能看到很多的IDC商家在独服上依旧有滥用限制条款,例如长时间占用超过100M就会被拔线等等。几乎所有的IDC都是这样,当然也是有财大气粗自身就是ISP带宽资源多的随便用根本不管的独服商家,例如两家法国的IDC,OVH和Online.net。

在介绍独服之前,我必须得先介绍一下现在从IDC商家使用独服的两种方式。

独服租用
顾名思义,租用就是IDC商家提供的机器,你只管付钱就好了,其他的东西并不用管。假设独服的硬件出现故障损坏,也是商家自行负责维护处理。一般我们个人使用独服的情况都是选择租用独服的方式,毕竟这种方式比较省心。但大部分独服的租用费用都相对而言比较高昂。

托管 Collection
服务器托管,是把机器托给机房管理的意思。从字面上我们可以看出,服务器托管需要我们自己准备服务器硬件,且一般机房都不会为你的硬件损坏而负责,假设服务器硬件损坏,一般需要自己邮寄配件给机房,机房能帮你更换。一般国内的机房托管费用大多都是按月计算一次性收费,不像国外的机房基本都有托管费+线路带宽费+电费这三部分费用。不过就算是国外的机房收费复杂,大多数情况下都还是比国内的机房便宜的。一般使用到托管的人也都清楚这些规则,所以我也不多介绍了。

那么独服的种类又有什么区别?下面我将会简单介绍一下各种独服的区别。

1. 塔式服务器

塔式服务器是一种标准机箱的服务器,常用于企业与公司中。由于体积过大,在IDC行业中并不常见。毕竟太占位置了。塔式服务器的扩展性相对其他类型的服务器好,因为他并不受空间的限制。虽然塔式服务器优点很多,然而体积问题导致没有一个机房会提供塔式服务器的托管,所以一般塔式服务器都是放在公司内部使用。

2. 机架式服务器

对于一个IDC来说,机房的容量就是生命线。机架式服务器专为机房而生,因为他占的位置真的很小。一般一个机柜有48U的空间,48U是什么概念?意思就是能放下48台1U的机架式服务器!一般一个数据中心都有几十个机柜到几百个机柜不等,是的,空间就是金钱。机架式服务器是我们最经常见到的服务器,由于需求的不同,机架式服务器有多种规格例如1U2U4U6U。自然越高的U数就表明他的体积够大。不过我们刚刚说的对于IDC行业来说,空间就是金钱。那还有没有压榨的余地?有的,在这种需求下孕育而生双子星1U服务器,四子星2U服务器等类似刀片服务器结构的服务器。外观规格大小与1U2U服务器一致,但双子星服务器能用1U的空间塞进两台独服!不过自然带来的代价也是有的,首先双子星1U服务器基本上单台服务器只有两个硬盘位,并且共用一个电源,甚至有的还共用一个网络模块。对于独立服务器来说,电源是至关重要的,电源故障导致的停机也是时有发生。不少服务器为了保障电源方面的稳定性都使用了双电源和自动切换开关来保障供电的安全性。共用网络模块的概念我们基本可以认为跟VPS差不多,只不过VPS是虚拟的交换机网关在进行分发,而这种公用网络模块是一种内部交换机。当然这种独服自然也能轻松的把成本降下去,只能说是仁者见仁智者见智。

3. 刀片服务器

所谓刀片服务器(准确的说应叫做刀片式服务器 blade server)是指在标准高度的机架式机箱内可插装多个卡式的服务器单元,实现高可用和高密度。是一种HAHD(High Availability High Density,高可用高密度)的低成本服务器平台,是专门为特殊应用行业和高密度计算机环境设计的,其主要结构为一大型主体机箱,内部可插上许多“刀片”,其中每一块”刀片”实际上就是一块系统主板。实际上刀片服务器很像是VPS的理念,只不过刀片式服务器几乎大部分硬件资源都是独立的。虽然刀片服务器确实很高效的利用了空间,但真正的刀片服务器成本其实价格根本不低,且一个数据中心如果要部署刀片服务器前期成本其实还是非常高的。刀片服务器一般一个母机上所有的刀片都共用一个电源和一个网络模块,所以自然也有了邻居这个说法。假设其中有个邻居大量占用网络资源,也是会导致其他刀片的网络访问受到影响的。由于真正的刀片服务器成本高昂,有些IDC也专门定制类刀片的服务器例如戴尔C6100或者我们常见的各种使用AtomCPU的服务器,这种定制类型的服务器成本就远远低于真正的刀片服务器了。

当然,这里我最后说一下挑选独立服务器的一些要点。首先我们选择独服第一个要看的就是机房稳定与否,独服的稳定性与品质很大程度决定于机房的实力如何,所以我们挑选独服的时候能选择大IDC大机房的产品就尽量选择,万一独服的硬件出现故障,大IDC能快速的维护修复,这一点是至关重要的。而且大IDC大机房在大多数情况下不会出现带宽超售的情况,而且跑路的风险也远比小机房低,毕竟数据最重要。如果没有特殊需求,选购独服还是尽量选择大IDC大机房的产品,不怕一万只怕万一,出点问题也好解决。

虚拟主机
最后我要稍微说一下虚拟主机。虚拟主机(Virtual Host或Shared Web Hosting),又称虚拟空间,主机空间,网站空间等等,这里统称虚拟主机。虚拟主机是一种网络技术,能让多个主机名称在一台服务器中运行,而且可以分开运行多个网站。虚拟主机一般主要用于HTTP,FTP,EMail这类网站服务,将一台服务器(这里也可以是虚拟服务器VPS)的资源服务内容逻辑划分为多个服务单元,与VPS不同的一点是,所有虚拟主机是基于应用层的划分,例如使用nginx或者Apache设置多个主机文件建立多个网站,这类技术就属于虚拟主机技术。

虚拟主机我们一般常见的有PHP空间,ASP空间,全能空间。顾名思义就是不同平台的空间。全能空间现在比较少见,但全能空间能支持PHP与ASP同时使用(但并不能混合代码为一个程序。),由于ASP的特性,全能空间与ASP空间基本上只能运行在windows服务器上。

一般虚拟主机的价格是非常便宜的,而且我们也不需要花费太大的心思去过多的管理。一般商家出售的虚拟主机性能基本都不高,但如果手头上有些什么没什么人访问的企业站或者是什么博客之类的,这种就非常适合直接丢在虚拟主机上。

由于虚拟主机我个人觉得是没什么可说的了,然而我们在选择虚拟主机的时候,我们还是要注意,选择大商家的产品。毕竟数据无价。

韩国服务器有哪些优势?

现在互联网用户发展越来越多,同时对服务器等基础设备的需求也日益增高。各种攻击也随之而来。很多站长在选择服务器的时候就陷入了苦恼,免备案的机器速度快的只有亚洲地区,其中国内是必须备案,香港地区网络经常不稳定,遇到攻击则是完全没有办法。现在韩国服务器应运而生。下面给大家介绍一下韩国服务器的优势。

韩国服务器
韩国服务器

1.韩国服务器不需要备案

韩国服务器也属于海外服务器,同样不需要做域名和服务器的备案,这点方便了很多站长朋友的使用,有时候业务紧急上线等待不了备案时间。这时候韩国服务器就是非常好的选择。

2.韩国服务器的速度快

韩国服务器是亚洲地区不需要备案的IDC当中速度较快的,几乎和香港相同,网页打开完全是秒开的状态。

全国ping延时大概:70ms 80ms左右。

3.韩国服务器带宽大,价格低

韩国服务器默认带宽都是10M起步,相比于香港的5M带宽要便宜很多。同时11月份联邦在线韩国服务器还正在做活动,购买10M带宽免费升级到20M独享带宽。增加带宽价格也要比香港地区便宜得多。

韩国大带宽经典机房,韩国SK机房:https://www.homedt.cn/krsk

4.韩国服务器抗攻击能力强

韩国服务器拥有充足的带宽资源,同时韩国的互联网基础设施发展也要比国内早得多,抗攻击经验相对国内以及香港地区都要丰富。联邦在线韩国高防KA、KS经典机房可以提供20G到400G的攻击流量防护。同时对于CC攻击也有专业的金盾硬件防火墙,可以完美拦截各类攻击。

KA机房:https://www.homedt.cn/krka

KS机房:https://www.homedt.cn/krks

5.服务质量有保障

韩国服务器我们都有IPMI硬件控制接口,可以远程一键开关机、重做系统等。客户下好订单,服务器硬件上架安装系统一般只需要2小时即可。

同时售后方面我们有专业的24小时技术支持,全年不间断售后。无论是在凌晨深夜或者是节日,您都可以随时联系到我们。

如何生成以及使用SSH密钥?

使用SSH密钥登陆服务器无需输入服务器密码,同时其安全性也要比其他方式高得多。那么如何生成linux服务器的SSH密钥呢?

创建基于Windows的SSH密钥

首先我们下载一个puttygen;

运行,单击生成(Generate)按钮;

额外的安全设置,您可以输入一个密钥的口令,防止有人通过密钥访问你的文件。

一旦KEY生成,请将其保存在一个安全又不易丢失的地方,此文件丢失无法恢复

选择所有在“粘贴在OpenSSH公钥的文本authorized_keys文件”。这时你需要进入控制面板,使用SSH密钥。

创建基于Linux的SSH密钥

创建和使用SSH是标准的工具,而应该在大多数Linux发行版是目前。用下面的命令,你可以生成SSH密钥。

运行ssh-keygen -t rsa。一个更安全的4096位密钥,run:ssh-keygen -t rsa – B 4096

按Enter键时,问你要保存的位置

输入密钥密码;

运行 cat ~/.ssh/id_rsa.pub

确保备份 ~/.ssh/id_rsa 文件,此文件不可恢复

使用Windows客户端的SSH密语连接服务器

首先下载并运行putty客户端

输入我们服务器的IP地址

点击到SSH–认证 选项菜单

点击浏览我们的密钥文件,然后点击打开即可链接

使用linux客户端的密钥链接服务器

首先确保你的linux机器上有SSH客户端,which ssh 为安装的情况下就先安装一个

发起连接:ssh -i /path/to/id_rsa user@x.x.x.x

使用完毕后使用Ctrl+d结束连接。

 

网站访问优化之-内容篇-使Ajax可缓存

使Ajax可缓存

Ajax引用的好处之一是它为用户提供即时反馈,因为它从后端Web服务器异步请求信息。但是,使用Ajax并不能保证用户不会在等待那些异步的JavaScript和XML响应返回时扭动他的拇指。在许多应用程序中,用户是否在等待取决于如何使用Ajax。例如,在基于Web的电子邮件客户端中,用户将不断等待Ajax请求的结果,以查找与其搜索条件相匹配的所有电子邮件。记住“异步”并不意味着“即时”。

为了提高性能,优化这些Ajax响应非常重要。提高Ajax性能的最重要方法是使响应可缓存,如添加过期或缓存控制头中所述。其他一些规则也适用于Ajax:
Gzip组件
减少DNS查找
缩小JavaScript
避免重定向
配置ETags

我们来看一个例子。Web 2.0电子邮件客户端可能使用Ajax来下载自动完成的用户地址簿。如果用户自上次使用电子邮件Web应用程序以来尚未修改通讯录,则可以从缓存中读取以前的地址簿响应(如果该Ajax响应可以使用未来的Expires或Cache-Control标头进行缓存)。必须通知浏览器何时使用先前缓存的地址簿响应与请求新的响应。这可以通过向地址簿Ajax URL添加时间戳来指示用户最后一次修改她的地址簿,例如,&t=1190241612。如果地址簿自上次下载以来没有被修改,则时间戳将是相同的,地址簿将从浏览器的缓存中读取,从而消除额外的HTTP往返。如果用户修改了地址簿,则时间戳会确保新的URL与缓存的响应不匹配,浏览器将请求更新的地址簿条目。

即使您的Ajax响应是动态创建的,并且可能只适用于单个用户,但它们仍可以被缓存。这样做会使您的Web 2.0应用程序更快。

尽早的释放缓冲

当用户请求页面时,后台服务器可能需要200到500毫秒的时间来拼接HTML页面。在此期间,浏览器在等待数据到达时处于空闲状态。在PHP中,你有函数flush()。它允许您将部分就绪的HTML响应发送到浏览器,以便浏览器可以在您的后端忙于HTML页面的其余部分时开始获取组件。这个好处主要是在繁忙的后台或前台看到的。

考虑刷新的好地方就在HEAD之后,因为头部的HTML通常更容易生成,并允许您包含任何CSS和JavaScript文件,以使浏览器在后端仍在处理的同时开始并行读取。

例:

... <! - css,js - >
 </ HEAD>
 <?php flush(); ?>
 <BODY>
 ... <! - content - >

雅虎 搜索率先研究和真正的用户测试,以证明使用这种技术的好处。

使用GET进行AJAX请求

在雅虎 邮件小组发现,在使用时XMLHttpRequest,POST在浏览器中分两步实现:首先发送邮件头,然后发送数据。所以最好使用GET,它只需要一个TCP数据包发送(除非你有很多的cookie)。IE中最大的URL长度是2K,所以如果你发送超过2K的数据,你可能无法使用GET。

一个有趣的副作用是POST没有实际发布任何数据的行为像GET。基于HTTP规范,GET是为了检索信息,所以当你只是请求数据时使用GET(在语义上)是有意义的,而不是发送数据到服务器端存储。

网站访问优化之-内容篇-减少DNS查找

减少DNS查找

域名系统(DNS)将主机名映射到IP地址,就像电话本将人名映射到他们的电话号码一样。当您在浏览器中键入www.yahoo.com时,浏览器联系的DNS解析器会返回该服务器的IP地址。DNS有成本。DNS通常需要20-120毫秒才能查找给定主机名的IP地址。直到DNS查找完成,浏览器才能从此主机名下载任何内容。

DNS查找缓存更好的性能。这种缓存可以在由用户的ISP或局域网维护的特殊缓存服务器上发生,但是在个人用户的计算机上也存在缓存。DNS信息保留在操作系统的DNS缓存(Microsoft Windows上的“DNS客户端服务”)中。大多数浏览器都有自己的缓存,与操作系统的缓存分开。只要浏览器在自己的缓存中保存了一条DNS记录,就不会因操作系统请求记录而烦恼。

按照DnsCacheTimeout注册表设置的指定,Internet Explorer默认缓存DNS查找30分钟 。Firefox缓存DNS查找1分钟,由network.dnsCacheExpiration配置设置控制。(Fasterfox将其更改为1小时。)

当客户端的DNS缓存为空(对于浏览器和操作系统)时,DNS查找的数量等于网页中唯一主机名的数量。这包括页面URL,图像,脚本文件,样式表,Flash对象等中使用的主机名。减少唯一主机名的数量可以减少DNS查找的次数。

减少唯一主机名的数量有可能减少页面中发生的并行下载量。避免DNS查找会缩短响应时间,但减少并行下载可能会增加响应时间。我的准则是将这些组件分成至少两个但不超过四个主机名。这在减少DNS查询和允许高度平行下载之间取得了很好的折衷。

缩小JavaScript和CSS

缩小是从代码中删除不必要的字符以减小其大小从而缩短加载时间的做法。代码缩小时,所有注释都将被删除,以及不需要的空白字符(空格,换行符和制表符)。在JavaScript的情况下,由于下载的文件的大小减小,所以这提高了响应时间性能。JSMin和YUI Compressor是用于缩小JavaScript代码的两个流行工具。YUI压缩机也可以缩小CSS。

混淆是可以应用于源代码的替代优化。它比缩小更复杂,因此更容易由于迷惑步骤本身而产生错误。在对美国十大网站的调查中,缩小比例达到了21%,而混淆度达到25%。尽管混淆的尺寸减小了很多,但缩小JavaScript的风险较小。

除了缩小外部脚本和样式之外,内嵌<script>和<style>块也可以并且应该被缩小。即使你用gzip脚本和样式,缩小它们的大小也会减少5%或更多。随着JavaScript和CSS的使用和大小的增加,通过缩小代码所节省的成本也会增加。

避免重定向

重定向是使用301和302状态码完成的。以下是301响应中HTTP标头的示例:

HTTP / 1.1 301永久移动
 位置:http://example.com/newuri
 内容类型:文本/ HTML

浏览器自动将用户带到在该Location字段中指定的URL 。重定向所需的所有信息都在标题中。响应的主体通常是空的。尽管他们的名字,301,也不是一个302响应在实践中被缓存,除非额外的头,如Expires或Cache-Control,表明它应该是。元刷新标记和JavaScript是将用户引导到其他URL的其他方法,但是如果您必须执行重定向,则首选技术是使用标准的3xx HTTP状态代码,主要是为了确保后退按钮正常工作。

要记住的主要是重定向减慢用户体验。在用户和HTML文档之间插入重定向会延迟页面中的所有内容,因为页面中没有任何内容可以呈现,并且在HTML文档到达之前不会开始下载任何组件。

最浪费的重定向之一经常发生,Web开发人员通常不知道。当一个URL中应该有一个尾部的斜杠(/)时,就会发生这种情况。例如,访问http://astrology.yahoo.com/astrology会得到一个301响应,其中包含http://astrology.yahoo.com/astrology/的重定向(注意添加的尾部斜线)。如果您使用的是Apache处理程序,则在Apache中通过使用Aliasor mod_rewrite或者DirectorySlash指令修复。

将旧网站连接到新网站是重定向的另一个常见用途。其他包括连接网站的不同部分,并根据一定的条件(浏览器类型,用户帐户类型等)指导用户。使用重定向连接两个网站很简单,只需要很少的附加代码。尽管在这些情况下使用重定向会降低开发人员的复杂性,但会降低用户体验。这种重定向的替代方案包括使用Alias和mod_rewrite如果两个代码路径托管在同一台服务器上。如果域名更改是使用重定向的原因,另一种方法是与Alias或组合创建一个CNAME(一个DNS记录,用于创建从一个域名指向另一个域名的别名)mod_rewrite。

删除重复的脚本

在一个页面中包含两次相同的JavaScript文件会使性能受损。这不像你想像的那么不寻常。对美国十大网站的回顾显示,其中两个包含重复的脚本。两个主要因素增加了在单个网页中复制脚本的几率:团队规模和脚本数量。当发生这种情况时,重复的脚本通过创建不必要的HTTP请求而损害了性能,并浪费了JavaScript执行。

不必要的HTTP请求发生在Internet Explorer中,但不在Firefox中。在Internet Explorer中,如果外部脚本包含两次并且不可缓存,则会在加载页面期间生成两个HTTP请求。即使脚本是可缓存的,当用户重新加载页面时,也会发生额外的HTTP请求。

除了产生浪费的HTTP请求之外,浪费时间多次评估脚本。无论脚本是否可缓存,这种冗余JavaScript执行都会在Firefox和Internet Explorer中发生。

避免意外包含同一个脚本两次的一种方法是在模板系统中实现一个脚本管理模块。包含脚本的典型方法是在HTML页面中使用SCRIPT标签。

<script type =“text / javascript”src =“menu_1.0.17.js”> </ script>

PHP中的一个替代方法是创建一个名为的函数insertScript。

<?php insertScript(“menu.js”)?>

除了防止多次插入相同的脚本之外,该函数还可以处理脚本的其他问题,例如依赖性检查和将版本号添加到脚本文件名以支持将来的Expires头文件。

配置ETags

实体标签(ETags)是Web服务器和浏览器用来确定浏览器缓存中的组件是否与源服务器上的组件匹配的机制。(“实体”是另一个词“组件”:图像,脚本,样式表等)ETag被添加来提供一种机制来验证比上一次修改日期更灵活的实体。ETag是唯一标识组件特定版本的字符串。唯一的格式约束是字符串被引用。源服务器使用ETag响应头指定组件的ETag 。

HTTP / 1.1 200 OK
 Last-Modified:Tue,2006年12月12日03:03:59 GMT
 ETag:“10c24bc-4ab-457e1c1f”
 内容长度:12195

之后,如果浏览器必须验证组件,则使用If-None-Match标头将ETag传递回原始服务器。如果ETag匹配,则返回一个304状态码,这个例子减少了12195字节的响应。

GET /i/yahoo.gif HTTP / 1.1
 主持人:us.yimg.com
 If-Modified-Since:星期二,2006年十二月12日03:03:59 GMT
 If-None-Match:“10c24bc-4ab-457e1c1f”
 HTTP / 1.1 304未修改

ETags的问题在于它们通常是使用属性来构建的,这些属性使得它们对于托管站点的特定服务器是唯一的。当浏览器从一台服务器获取原始组件时,ETag将不匹配,并且稍后尝试在另一台服务器上验证该组件,这种情况在使用服务器集群处理请求的网站上非常常见。默认情况下,Apache和IIS都将数据嵌入到ETag中,这大大降低了在具有多个服务器的网站上进行有效性测试的几率。

Apache 1.3和2.x的ETag格式是inode-size-timestamp。虽然给定的文件可能位于多个服务器的相同目录中,并且具有相同的文件大小,权限,时间戳等,但是其inode不同于一个服务器。

IIS 5.0和6.0与ETags有类似的问题。IIS上ETags的格式是Filetimestamp:ChangeNumber。A ChangeNumber是用于跟踪对IIS的配置更改的计数器。ChangeNumber网站后面的所有IIS服务器都不可能是相同的。

最终的结果是由Apache和IIS生成的ETags完全相同的组件不会从一台服务器到另一台服务器。如果ETag不匹配,用户不会收到ETags设计的小而快的304响应; 相反,他们会得到一个正常的200响应以及组件的所有数据。如果您只在一台服务器上托管您的网站,这不是一个问题。但是,如果您有多台托管您的网站的服务器,并且您使用的是默认的ETag配置的Apache或IIS,那么您的用户的页面速度会变慢,您的服务器负载也会增加,消耗的带宽也会越来越多,高效地缓存您的内容。即使你的组件有一个更远的Expires标题,每当用户点击刷新或刷新时,仍然会发出条件GET请求。

如果您没有充分利用ETags提供的灵活验证模型,最好只删除ETag。该Last-Modified头验证基于对组件的时间戳。删除ETag会减少响应和后续请求中的HTTP头的大小。此Microsoft支持文章介绍如何删除ETags。在Apache中,只需将以下行添加到Apache配置文件即可完成:

FileETag没有