VPS速度太慢有什么方法能提高VPS速度吗?
1Peer1 dedicated洛杉矶机房。针对中国线路进行了优化,ping值在200ms以内。2henet 加州(Frement)机房henet的单线路机房,这个线路对中国电信和网通比较友好,结点少,速度快。ping值200ms左右。linode(加州数据中心)用的就是这个机房。3krypt圣安娜机房对中国速度快,结点少,ping值200ms左右。4pacificrack的nLayer优化段对中国速度快,结点少,ping值200ms左右。上介绍的是如果你有Money可以换成对中国电信和网通比较友好,结点少,速度快的主机。再之就是你可以通过购买国内的“CDN”加速,但此方法要等你的流量上万级了才舍得花这成本。其次介绍的网页优化,网页里的js、css、picture文件可以传到不服务器,采用服务器集群。建议还是换更好、更快的的VPS
我用 Nodejs 开发了 Am I Hacked,算是有一点用 Nodejs 支持大流量的经验。先列一些数字
服务器是 Linode 512,也就是 Linode 上最低端的 VPS ,只有 512MB 的内存。
数据库,Nodejs 程序和静态文件都放在同一台服务器上。
大部分查询耗时 20-100ms 。少数查询由于缓存 miss 较多,耗时会高达500ms。
最高日PV超过了一百万,Google Analytic 上显示的同时在线人数最高达2000。
平均每秒能完成20-30次查询,瓶颈在磁盘IO,CPU几乎无压力。
虽然压力如此之大,首页几乎都能在一秒内打开,查询也会在3秒内返回。
Nodejs 程序占用内存 90MB-110MB,剩余内存都被磁盘缓存占据。
以我的了解,Python 和 Ruby 上的非 Event Driven 的 Framework 根本不可能达到这样的性能。
然后说说 Nodejs 的其他优点
Nodejs 的架构与 Django, Rails 等传统的 Framework 不同,不需要放在 Nginx / Apache 后,利用 WSGI, CGI 之类的接口一板一眼的 [接受Request] -> [运行程序逻辑] -> [生成并返回Response]。这是一个巨大的变化,之前一些无法想象的功能都有可能实现了。比如 https://githubcom/Miserlou/DirtyShare 可以用浏览器实现 P2P 的文件传输。正因为 Nodejs 可以更精细的控制 Request 和 Response 的时间和内容,websocket 似乎天生就是为 Nodejs 而生的,而配合 http://socketio 这个神奇的库之后,在 realtime webapp 这个领域,Nodejs 已经没有对手了。
Nodejs 的包管理器 npm 设计得比 python 和 ruby 好很多。有很多的 module 开发者。
当然也有一些缺点
1、更新软件包
保持服务器软件包的最新版本是确保安全性的关键步骤之一。通过运行以下命令,我们可以更新服务器上的软件包:
sudo apt update
sudo apte upgrade
第一条命令用于更新软件包的列表,第二条命令则将包含在列表中的软件包升级到最新版本。请注意,有时候升级过程可能需要一些时间。
2、配置防火墙
防火墙是保护服务器免受恶意网络活动的重要工具。在配置防火墙之前,我们需要安装一个叫做ufw的工具。
sudo apt install ufw
安装完成后,我们可以使用以下命令启用防火墙并配置规则:
sudo ufw enable
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
第一条命令启用防火墙,第二至四条命令允许SSH、HTTP和HTTPS流量通过防火墙。你也可以根据需要配置额外的规则。
3、禁用不必要的服务
服务器上运行的每个服务都可能成为潜在的攻击目标。因此,我们应该仅仅启用必要的服务,并禁用不必要的服务。以下是禁用一个服务的命令示例:
sudo systemctl disable
4、使用强密码和密钥
为了防止恶意用户猜测密码和避免密码被暴力破解,我们应该设置一个强密码策略。以下是设置密码策略和使用密钥的命令示例:
sudo nano /ect/ssh/sshd_config
在打开的文件中找到以下行并进行适当的修改:
# PasswordAuthentication yes
# PubkeyAuthentication yes
将PasswordAuthentication的值改为no,将PubkeyAuthentication的值改为yes。保存文件并退出。接下来,重新启动SSH服务:
sudo service ssh restart
5、设置登录限制
为了限制登录服务器的尝试次数,我们可以配置登录限制。以下是设置登录限制的命令示例:
sudo nano /etc/ssh/sshd_config
在打开的文件中找到以下行并进行适当的修改:
# MaxAuthTries 6
# MaxSessions 10
将MaxAuthTries的值改为3,将MaxSessions的值改为5。保存文件并退出。接下来,重新启动SSH服务:
sudo service ssh restart
6、监控日志文件
监控服务器的日志文件可以帮助我们及时发现和应对潜在的安全威胁。以下是监控日志文件的命令示例:
sudo tail -f /var/log/authlog
这个命令将实时显示/var/log/authlog文件的内容,其中包含了与用户认证相关的日志信息。
牢记以下这七点会让你的Linux服务器变得更安全
图1:运行中的服务。
安装所需的服务
如果你打算运行一台服务器,可能会想“我有来自Linode的40GB固态硬盘(SSD)存储系统,于是我可以安装想要安装的任何服务。”没错,你的地盘你作主:可以在服务器上安装任意软件。不过,别犯想当然的毛玻连最固若金汤的服务器也会因有人钻了在该服务器上运行的任何未打补丁或易受攻击的软件组件的空子而被劫持。
所以,头一条规则就是让你的服务器尽量精简。只安装你确实需要的那些程序包。要是有不需要的程序包,那就清除。程序包数量越少,代码没打上补丁的可能性就越校在安装任何软件和依赖程序包(比如ownCloud)之前,你应该读一下ownCloud的说明文档,只安装它需要的那些程序包。
运行所需的服务
第二条规则就是只运行需要的那些服务。许多发行版或程序包可能会开启某些服务,在不同的端口上运行。这可能会带来安全风险。于是,打开终端,运行下列命令:netstat -npl
输出结果会显示哪些服务在哪些端口上运行。如果你发现任何不应该运行的服务,停止它。你还应该密切关注已被启用、系统启动时运行的服务。只要在运行systemd的系统上运行下列命令,就可以来检查这方面:systemctl list-unit-files --type=service | grep enabled
视系统而定,你会获得如上图1中所示的输出结果。要是你发现任何不需要的服务,可以使用强大的systemct1命令来禁用它:systemctl disable service_name
限制对服务器的访问
就好比你不会把自家钥匙随随便便交给认识的人,也不会将访问服务器的权限交随随便便授予认识的人。一旦明确了这个规则,就可以限制对服务器的访问。要牢记这点:这一切打消不了决意要破坏你服务器的坏人的念头。不过,其作用在于为你的服务器增添了多一层的安全,防范只是捡漏的不法分子。
千万不要以根用户的身份登录
以超级用户的身份通过ssh进入到服务器不是一个好做法。我们后面会禁止以根用户身份通过ssh进入到服务器,不过在这么做之前,不妨创建一个拥有sudo权限的用户,那样你就能通过ssh进入到服务器,执行管理员任务了。一旦你登录进入到服务器,总是可以将用户切换成根用户,如果需要的话。如果你已经在系统上有了用户,就跳过几步;不然,跟着我走。
不同的发行版使用不同的方法来添加新用户;Red Hat/CentOS使用useradd,Ubuntu/Debian使用user adduser。
在Fedora/CentOS上创建新用户:useradd swapnil
然后,为该用户创建密码:passwd swapnil
它会要求你为它提供用户的新密码。现在,你需要为该用户授予sudo权限。运行下列命令:EDITOR=nano visudo
寻找下面这一行(见图2):# %wheel ALL=(ALL) ALL
图2:为用户授予sudo权限。
去掉该行的注释(#符号意味着该行被注释;只要去掉这个符号,即可去掉注释),那样它看起来就像这样:%wheel ALL=(ALL) ALL
现在,保存并关闭文件。如果用户不属于wheel组,你只要运行下面这个命令,就可以将它轻松添加到组:# usermod -aG wheel swapnil
在Ubuntu系统上,你可以添加新用户,为此运行下列命令:adduser swapnil
回答系统提出的一些问题,包括为该用户创建密码。一旦创建完毕,为用户授予sudo权限:gpasswd -a swapnil sudo
打开另一个终端窗口,试着以刚创建的用户的身份登录进入到服务器,试着以sudo权限执行一些管理员任务。要是一切正常,进入到下一步。
禁用根用户登录
我们现在要禁用根用户登录,这意味着没人能够以根用户的身份通过ssh或登录进入到服务器。为此,打开sshd配置文件:nano /etc/ssh/sshd_conf
下一步,寻找显示下列内容的这一注释行:#PermitRootLogin no
然后保存并关闭该文件,重启服务:service ssh restart或者systemctl restart sshd
重要提醒:这时切莫退出服务器。你要测试能不能使用刚创建的用户成功地通过ssh进入到服务器。打开终端的另一个实例,以之前创建的用户通过ssh进入到服务器。你不希望完全被锁在服务器外面。要是一切都正常,你可以以根用户身份安全地注销退出服务器。
变更端口
我们对sshd配置文件要进行的第二个变化就是更改默认端口。这主要是增添一层隐匿性,让你的服务器确保安全,而不是给服务器果真增添任何实际的安全机制。这就好比保安服务公司派一样的车辆来运送重要人物,那样攻击者就不知道该攻击哪些车了。
打开sshd_config文件(这回以sudo权限打开,因为你再也不能以根用户身份登录进入到服务器了):sudo nano /etc/ssh/sshd_conf
然后,找到这一注释行:#Port 22
去掉该行注释,选择一个端口号。在选择端口时,务必要确保它没有被你系统上的其他任何服务所使用,我为服务器选择了端口1977:Port 1977
下一步,保存并关闭文件,重启sshd服务。再一次,注销退出服务器之前,检查一下设置,为此可以打开另一个终端窗口,然后使用该模式登录进去:ssh -p{port_number}@server_IP
示例:
ssh -p1977
swapnil@1014190118
如果你能成功登录进去,就搞定了。
无密码登录
你可以通过无密码登录更容易通过ssh进入到服务器,并且完全禁用密码验证,增添另一层安全。务必要牢记一点:你只能够从创建ssh密钥的那台机器登录进入到你的服务器。
不妨使用下列命令,在本地系统上创建ssh密钥(见图3):ssh-keygen - t rsa
图3:创建ssh密钥。
它会提出一些问题;你不用更改密钥位置,保留其默认值,为它提供一个难以猜中的通行码。下一步,你需要将这些密钥拷贝到服务器上,那样两台机器就能使用密钥与对方进行联系了。
cat ~/ssh/id_rsapub | ssh -p 1977 swapnil@remote-server ";mkdir -p ~/ssh cat ~/ssh/authorized_keys"
现在,试着从另一个终端通过ssh进入到服务器;要是一切正常,它不会要求你输入密码。
这一步主要是为了方便,而不是增添一些实实在在的安全。不过你也可以增添一点安全,只要禁用服务器的密码验证。只需打开sshd配置文件,寻找这注释的一行:#PasswordAuthentication yes
去掉该行注释,将它从yes改成no。保存并关闭文件。然后,重启sshd服务。再一次,切莫从当前窗口关闭服务器连接。打开另一个窗口,登录进入到服务器(确保它没有要求输入密码)。
这个设置的另一个方面在于,你现在只能从创建ssh密钥的那一台机器通过ssh进入到服务器。如果你经常从不同的机器登录进入到服务器,千万不要使用这一方法。
这些是试图自行运行服务器的新用户需要考虑的一些基本方面。牢记一点:黑客总是先行一步;他们不断寻找进而闯入你服务器的任何漏洞。因而,最佳实践就是对你的服务器做一套始终最新的备份。我建议你在对站点做任何变化前后都应该进行备份。那样一来,万一你的服务器中了招,总是能够从上一套备份恢复过来。
以下是一些值得推荐的游戏服务器运营商:
1 Amazon Web Services (AWS): AWS提供强大的云计算和游戏服务器解决方案。他们的服务可靠稳定,支持全球范围的部署,并具有强大的弹性和灵活性。
2 Microsoft Azure: Azure也是一家知名的云计算提供商,他们提供广泛的游戏服务器解决方案。Azure具有强大的性能和可扩展性,并提供了专门为游戏开发者设计的工具和服务。
3 Google Cloud Platform (GCP): GCP是另一个主要的云计算提供商,他们提供高性能的游戏服务器解决方案。GCP具有全面的全球覆盖能力,支持多种游戏引擎和工具。
4 OVH: OVH是欧洲最大的云计算和托管提供商之一,他们提供世界各地的游戏服务器解决方案。OVH具有多种规格和定价选项,适合不同规模和需求的游戏项目。
5 Vultr: Vultr是一个知名的云服务器提供商,他们提供快速、稳定和经济实惠的游戏服务器解决方案。他们在全球范围内拥有多个数据中心,并提供简单易用的管理控制台。
以上推荐的游戏服务器运营商都在业界拥有良好的声誉,并提供高质量的服务。你可以根据自己的需求和预算进行比较,并选择最适合你的运营商。
0条评论