Nginx、Apache、Mysql、Memcache,服务器有 4G 内存。如何优化才能用上足够的内存?

Nginx、Apache、Mysql、Memcache,服务器有 4G 内存。如何优化才能用上足够的内存?

我有 1 台带有 Apache Nginx 代理的专用服务器。Memcache、mysql、4G Ram。

这些天,我的网站访问量没有增加,但我的服务器总是在特定时间段内超载。(上午 9 点 - 下午 3 点)

内存使用量每秒都在增加,直到满。那一刻,我的服务器就会超载。

我必须终止所有 apache、mysql 服务并重新启动它以获取可用内存。这就是循环。

这是我目前正在使用的 RAM 160(nginx)220(apache)512(memcache)924(mysql)这是进程编号 4(nginx)14(apache)5(memcache)20(mysql)

这是我的 my.cnf 配置。有人可以帮我优化它吗?

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
skip-locking 
skip-networking 
skip-name-resolve

# enable log-slow-queries
log-slow-queries = /var/log/mysql-slow-queries.log
long_query_time=3

max_connections=200
wait_timeout=64
connect_timeout = 10
interactive_timeout = 25
thread_stack = 512K
max_allowed_packet=16M 
table_cache=1500 
read_buffer_size=4M 
join_buffer_size=4M 
sort_buffer_size=4M
read_rnd_buffer_size = 4M 
max_heap_table_size=256M 
tmp_table_size=256M 
thread_cache=256 
query_cache_type=1 
query_cache_limit=4M 
query_cache_size=16M 
thread_concurrency=8
myisam_sort_buffer_size=128M 
# Disabling symbolic-links is recommended to prevent assorted security risks 
symbolic-links=0 
[mysqldump] 
quick 
max_allowed_packet=16M 

[mysql] 
no-auto-rehash 

[isamchk] 
key_buffer=256M 
sort_buffer=256M 
read_buffer=64M 
write_buffer=64M 

[myisamchk] 
key_buffer=256M 
sort_buffer=256M 
read_buffer=64M 
write_buffer=64M 

[mysqlhotcopy] 
interactive-timeout 

[mysql.server]
user=mysql
basedir=/var/lib

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

答案1

我不确定您收到了多少请求,但我想说,首先您需要找出瓶颈在哪里。就您使用的应用程序数量而言,它已经超载了。以下是一些建议,
1. 最重要的是,确保您的代码已优化。尝试找出是否有任何代码或对数据库的查询是瓶颈。检查 MySql 的所有注意事项。缓存查询结果,这会减慢速度。2
. 确保您使用的是 PHP-FPM。3
. 使用 APC 进行操作码缓存。4
. 如果可能,请在自己的服务器(或虚拟服务器)上托管 MySql。5.
如果您使用 Nginx 仅提供静态内容,使用 Apache 提供动态内容,我建议您删除 Apache 并使用 Nginx 提供静态和动态内容。
希望这可以提高您的服务器性能。
关于您的“my.cnf 配置”,我不是这方面的专家,所以我无法帮助您。

相关内容