首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EC2实例自动不可用- 504网关超时

问EC2实例自动不可用- 504网关超时
EN

Server Fault用户
提问于 2021-01-07 14:11:26
回答 1查看 1.2K关注 0票数 0

我有一个t3a.micro实例,运行流量相当低的wordpress。此实例自动不可用,导致504网关超时错误。此时,我也无法使用ssh连接EC2。它在一天中的任何时候都会发生,有时是每天发生,有时甚至一周都不会发生。当它下降的时候,也没有交通高峰。我也是在AWS的支持下提出这个问题的,并得到了以下答复:

在检查结束时,我能够看到实例在过去24小时中多次失败实例状态检查,表明实例在OS级别上有问题。在进一步检查控制台日志后,我看到了以下内存错误:内存不足:终止进程2050 (apache2)总计-vm:552924kB,anon:54868kB,file-rss:0kB,shmem-rss:32076kB,UID:33个pgtable:848kB oom_score_adj:0 of memory: apache2 (apache2)总计-vm:624936kB,anon-rss:51952kB,file-rss:0kB,shmem-rss:34184 0kB,UID:33个pgtable:856kB oom_score_adj:0 Out内存:已杀死进程1815 (apache2)总计:5504kB,anon-rss:51604kB,file-rss:0kB,shmem-rss:34532 0kB,UID:33 pgtable:836 0kB oom_score_adj:0 of memory: apache2-vm:624744 0kB,anon-rss:52260 0kB,file-rss:0kB,shmem-rss:32136 0kB,UID:33 pgtable:856 0kB oom_score_adj:0 of memory: oom_score_adj:0 2014 (apache2)总计-vm:552440kB,anon-rss:54020 0kB,file-rss:0kB,shmem-rss:28856kB,UID:33 pgtable:844 0kB内存不足:杀死进程2165 (apache2)总计-vm:624756kB,anon:51948kB,file-rss:0kB,shmem:29836kB,UID:33 pgtable:856 0kB oom_score_adj:0 A bit关于OOM (内存外)杀手,如果内存被进程耗尽,从而威胁系统的稳定性,那么OOM杀手就会启动。OOM杀手的任务是继续销毁进程,直到释放足够的内存,以便内核试图运行的进程的其余部分能够顺利运行。从输出结果看,您的实例可能耗尽了内存,因此Linux内核正在调用OOM杀手。

他们建议监控每个进程的内存使用情况,并终止或修复该进程,以避免使用那么多内存。当我运行wordpress时,这看起来并不是一种非常实用的方法,即使它使用了太多内存几分钟,我也无法修改它。

我还有另一个实例t3.size使用弹性豆柄,它在bean梗提供的amazon环境中托管了一个带有nginx/tomcat环境的java web应用程序。同样的问题发生在这个实例中,自动下降并显示504网关超时。

问题:-我不想升级我的实例,因为它们在当前流量的情况下运行得非常好。是否有任何解决方案来处理这些问题,而不需要升级,当然也不需要对进程进行持续监视?

EN

回答 1

Server Fault用户

发布于 2021-01-07 17:30:05

你的主要选择是:

  • 计算出使用RAM的方法,并将其配置为使用较少的RAM (最佳选择)
  • 使用具有更多RAM的实例(这可能无法完全解决问题)
  • 使用交换文件作为增加RAM的廉价方法--我使用交换文件只是为了确保有一些备用的来防止OOM的情况,所以虽然它不能解决这个问题,但这是个好主意。

我在一个MySQL (512 on内存)和512 on交换空间上运行了五个相当低容量的Wordpress网站、t3a.nano和其他一些工具。

以下是几种减少典型Wordpress系统内存使用的方法(从我的头顶):

  • 限制PHP线程/工作人员的数量。我认为我允许可能有2-3个线程,如果一个线程不可用,web服务器将等待一个线程,这通常不会很长。这是关键,因为PHP / Wordpress是一个巨大的内存占用。
  • 限制每个PHP线程可用的最大内存。
  • 关闭MySQL性能模式
  • 打开MySQL参数以减少内存使用。基本上,您只需阅读文档,但下面我将复制我的当前配置。这是从我的Windows,但Linux将是类似的。
  • 检查您的web服务器内存使用情况,如果它是Apache和高,您可以考虑Nginx是快速和小。

您还应该搜索"LAMP (或LEMP) wordpress减少内存使用量“

下面是我使用的MySQL配置。这是我为MySQL 8.x提供的新配置,还没有经过测试,但是它非常类似于我的MySQL5配置,所以应该可以。它被优化为低内存使用率,而不是高性能,而且我不是MySQL专家,所以它可能不是很好。

代码语言:javascript
复制
[mysqld]
# set basedir to your installation path
basedir=(insert here)
# set datadir to the location of your data directory
datadir=(insert here)

# Turn off performance schema
performance_schema=OFF

# Turn off binary log
skip-log-bin
log_bin = OFF

# Disable monitoring
innodb_monitor_disable=all

# RAM optimisation settings overall
innodb_buffer_pool_size=50M
innodb_buffer_pool_instances=1
innodb_flush_method=unbuffered
innodb_log_buffer_size=1048576
innodb_log_file_size=4194304
innodb_max_undo_log_size=10485760
innodb_sort_buffer_size=64K
innodb_ft_cache_size=1600000
innodb_max_undo_log_size=10485760
max_connections=20
key_buffer_size=1M

# Reduce RAM: per thread or per operation settings
thread_stack=140K
thread_cache_size = 2
read_buffer_size=8200
read_rnd_buffer_size=8200
max_heap_table_size=16K
tmp_table_size=128K
temptable_max_ram=2097152
bulk_insert_buffer_size=0
join_buffer_size=128
net_buffer_length=1K

# Slow query log
slow_query_log=OFF
#long_query_time=5
#log_slow_rate_limit=1
#log_slow_rate_type=query
#log_slow_verbosity=full
#log_slow_admin_statements=ON
#log_slow_slave_statements=ON
#slow_query_log_always_write_time=1
#slow_query_log_use_global_control=all

# Logs
log_error = (wherever)
general_log = ON
general_log_file  = (wherever)
票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1048945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档