我有一个网站,过去几个月像往常一样获得更多流量。
我希望这个网站能够在相同的时间内为更多的用户提供服务,而无需更改硬件。
在片刻,我使用Apache2与Wordpress和Memcached。
我想知道我是否可以使用Nginx在这个网站上获得更多性能。
当我使用Wordpress在Web服务器上运行Nginx并且我在60秒内运行10000个用户的测试时,我只得到600个成功的答案,其他9400个连接获得错误。 (大多是超时)。 IMG
当我使用Memcached以前的配置我得到9969成功答案,但每秒最大用户不超过451 IMG
但在我的网站上,我每秒有超过1000个用户。
所以有人能告诉我我做错了什么吗?
系统:
AWS EC2云服务器2GHz,650MB RAM
Ubuntu 13.10
Nginx 1.4.7
Memcached 1.4.14
Php-fpm for php 5.5.3
答案 0 :(得分:0)
您应该考虑的数字是Avg error rate
,您的WP
+ Nginx
+ Memcached
配置看起来并不太糟糕,所以我认为这是不错的选择。
也许您可以增加-m
中的memcached
参数以匹配一半的RAM。
BUT:
memcached
不保证数据在内存中可用,您必须为缓存未命中风暴做好准备。避免风暴的一个有趣的方法是设置一个随机偏移的过期时间,比如10 + [0..10]分钟,这意味着一些项目将存储10,其他项目将存储20分钟(目标是并非所有项目同时到期)。
此外,无论您为memcached
分配多少内存,它都只会使用所需的内存,例如它只分配实际使用的内存。 使用-k
选项(在您的配置中禁用),整个内存在memcached
启动时保留,因此它始终分配全部内存,不是否需要它。
此451
个连接数实际上可能会有所不同,具体取决于具体情况。在执行基准测试时查看平均值总是一个好主意,即更好地拥有0%Avg error rate
和451
服务客户,而不是65%Avg error rate
和8200+服务客户。
但是,为了卸载更多资源,你可以为Wordpress使用额外的缓存,有很多插件,我亲自为此编写了一个。
关于nginx
配置,您还可以调整一些参数:
worker_rlimit_nofile 100000;
worker_connections 4000;
# optmized to serve many clients with each thread, essential for linux use epoll;
# accept as many connections as possible,may flood worker connections if set too low
multi_accept on;
# cache informations about FDs, frequently accessed files
# can boost performance, but you need to test those values
open_file_cache max=200000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
# to boost IO on HDD we can disable access logs
access_log off;
# copies data between one FD and other from within the kernel
# faster then read() + write()
sendfile on;
# send headers in one peace, its better then sending them one by one
tcp_nopush on;
# don't buffer data sent, good for small data bursts in real time
tcp_nodelay on;
# number of requests client can make over keep-alive -- for testing
keepalive_requests 100000;
# allow the server to close connection on non responding client, this will free up memory
reset_timedout_connection on;
# request timed out -- default 60
client_body_timeout 10;
# if client stop responding, free up memory -- default 60
send_timeout 2;
# reduce the data that needs to be sent over network
gzip on;
gzip_min_length 10240;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml;
gzip_disable "MSIE [1-6]\.";
答案 1 :(得分:0)
我们遇到的问题不是一个真正的问题。 我们只解释了测试结果错误。
400用户限制不是实际限制,服务器能够使用户保持恒定水平,因为它足够快,可以立即回复所有请求。
测试结果与我的网站不可比,即获得1k用户,因为它拥有比AWS免费实例更好的硬件。 但我认为每秒400个用户对于这样一个“弱”的用户来说是一个非常好的结果。服务器..所以
问题解决了我认为,因为我自己愚蠢地阅读测试结果......
感谢您的帮助,无论如何bodi0。