Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance Heroku dynos何时使用交换内存?_Performance_Heroku_Ruby On Rails 4_Unicorn - Fatal编程技术网

Performance Heroku dynos何时使用交换内存?

Performance Heroku dynos何时使用交换内存?,performance,heroku,ruby-on-rails-4,unicorn,Performance,Heroku,Ruby On Rails 4,Unicorn,我正在为我的开发服务器在免费dyno上托管我的Rails 4.1.4项目,其中包含2个Unicorn进程。在应用程序运行了一段时间后,有时我感觉速度变慢了。我添加了新的relic、logentries和enable日志运行时度量。然后我看看新的文物和日志记录 » heroku web.1 - - source=web.1 dyno=heroku.21274089.82eb32b4-c547-4041-b452-d3fedae05ee9 sample#load_avg_1m=0.00 sampl

我正在为我的开发服务器在免费dyno上托管我的Rails 4.1.4项目,其中包含2个Unicorn进程。在应用程序运行了一段时间后,有时我感觉速度变慢了。我添加了新的relic、logentries和enable日志运行时度量。然后我看看新的文物和日志记录

» heroku web.1  - - source=web.1 dyno=heroku.21274089.82eb32b4-c547-4041-b452-d3fedae05ee9 sample#load_avg_1m=0.00 sample#load_avg_5m=0.00 sample#load_avg_15m=0.01
» heroku web.1  - - source=web.1 dyno=heroku.21274089.82eb32b4-c547-4041-b452-d3fedae05ee9 sample#memory_total=393.41MB sample#memory_rss=368.38MB sample#memory_cache=4.47MB sample#memory_swap=20.56MB sample#memory_pgpgin=121244pages sample#memory_pgpgout=25796pages


我不明白的是,我的dyno的内存只有
sample#memory_rss=368.38MB
,但为什么它已经使用了swap memory
sample#memory_swap=20.56MB
?因为根据我在heroku文章中的想法,如果达到dyno的内存(免费dyno的内存为512 Mb),它应该切换到交换内存。

即使在我的应用程序中只使用了50%的可用RAM,我也看到了显著的交换,所以我问。以下是他们支持团队的一段话:

我们将Ubuntu的交换性保留在运行时的默认值60,包括PX dynos

值为60可确保应用程序在达到最大内存之前就开始交换。Linux内核参数vm.swappiness的范围从0到100,0表示不交换,100表示始终交换


因此,在Heroku上运行时,即使应用程序的占用空间远小于dyno的广告RAM,您也应该希望应用程序能够进行交换。

那么您如何决定修复它呢?因为使用交换空间会降低应用程序性能。@Samnang用户无法修复。这需要由Heroku修复。根据Heroku的说法,这不应该影响应用程序的性能。“30-50MB的交换空间,只要你的应用程序还有可用内存,就不会影响你的性能。linux将要交换的内存是未使用的内存。它被系统移动到了那里,因为它已经有一段时间没有使用了,并且允许在你的ram中释放一些内存。”@Lev这个回答有点不屑一顾。这对于任何接近最大内存的人来说都是一个潜在的性能问题,即使是偶尔。您引用的回复可以重新表述为“只要不接近RAM限制,性能就很好”。交换设置为60时,假设应用程序交换更好,这在注重性能的系统中很少发生。@BrianPO'Rourke有什么建议或想法吗?