有没有办法为特定服务/进程保留特定数量的内存?
我想保证 OpenSSH 始终有足够的可用内存,以便在服务器内存已满的情况下它可以接受新的 SSH 连接。
谢谢。
我确定这是一个非常基本的问题,但我只是想了解运行基于 Rails 的站点的 Ubuntu Hardy 服务器发生了什么。似乎我有可用内存,但系统报告它仍在交换内存(除非我读错了?)。
这是free -m输出
total used free shared buffers cached
Mem: 1024 905 118 0 33 409
-/+ buffers/cache: 462 561
Swap: 2047 95 1952
Run Code Online (Sandbox Code Playgroud)
任何人都可以向我解释一些可能的原因,即它始终保持 95MB 的交换空间(它永远不会更少)?我只是在寻找一些关于我可以检查的内容的线索,这些线索会向我确切地解释 Linux 中如何利用内存。
我不确定我是否有内存泄漏问题(正如我的托管公司所建议的那样),或者我们是否都需要阅读http://linuxatemyram.com。也许你们聪明的人可以帮助我们?
这是一个前端 Web 服务器虚拟机,基本上只在 RHEL 5.5 上运行 nginx 和 php-fpm。该服务器正在为 PHP 电子商务工具 Magento 提供支持。服务器在共享环境中运行,但我们很快就会改变这种情况。
无论如何.. 重新启动后服务器运行得很好,但一天之内它就会把自己磨成一团糟。加载页面实际上需要 2 分钟,CPU 像疯了一样尖峰,等等。当我通过 SSH 登录时,控制台甚至变得缓慢。就像我的整个服务器都瘫痪了一样。
我还一直通过 top 和 tcpdumping 传入流量监视数据库服务器。数据库在“缓慢”加载时间的大部分时间里都处于空闲状态。当我开始看到来自前端服务器的查询时,页面很快就会加载。
以下是我在减速期间登录后的一些统计信息,在重新启动 php-fpm 后:
[mike@front01 ~]$ free -m
total used free shared buffers cached
Mem: 5963 5217 745 0 192 314
-/+ buffers/cache: 4711 1252
Swap: 4047 4 4042
[mike@front01 ~]$ top
top - 11:38:55 up 2 days, 1:01, 3 users, load average: 0.06, 0.17, 0.21
Tasks: 131 total, 1 running, 130 sleeping, …Run Code Online (Sandbox Code Playgroud) Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 1540673 bytes) in /home/appdev/glicious/Nutrition.php on line 41
如果您没有注意到,134217728 比 1540673 大两个数量级。
我已经使用 Server 2008 和 IIS 7 设置了 Tomcat 服务器。
如何判断 JAVA_OPTS 环境变量是否正在被实际使用?
我之前听说我必须编辑 service.bat 文件才能使用 JAVA_OPTS 环境变量,但是我怎么知道它是否成功?
我一直无法找出是否有办法在日志或其他更定量的东西中查看它。我能想到的尝试测试它的唯一方法是编辑变量并尝试判断性能是否存在差异。我将 JAVA_OPTS 设置为以下内容:
-server -Xmx1k -Xms1k-Xmn1k -Xss128k -XX:+UseParallelGC -XX:ParallelGCThreads=20 -XX:PermSize=1k -XX:MaxPermSize=1k
Run Code Online (Sandbox Code Playgroud)
另外,我发现文档说要将 service.bat 中的以下行更改为:
"%EXECUTABLE%" //US//%SERVICE_NAME% ++JvmOptions "-Djava.io.tmpdir=%CATALINA_BASE%\temp;-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager;-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties" --JvmMs 128 --JvmMx 256
Run Code Online (Sandbox Code Playgroud)
到:
"%EXECUTABLE%" //US//%SERVICE_NAME% ++JvmOptions "-Djava.io.tmpdir=%CATALINA_BASE%\temp;-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager;-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties" %JAVA_OPTS%
Run Code Online (Sandbox Code Playgroud)
我运行命令时没有出现错误
service install ServiceName
Run Code Online (Sandbox Code Playgroud)
到目前为止,在我使用更改的内存设置重新安装服务之前,一切似乎都像往常一样快速运行,这让我认为 JAVA_OPTS 没有影响任何事情。
对不起,如果这是一个广泛的问题,但我还没有找到一个很好的线索来了解后端实际发生的事情。有人可以对此有所了解吗?
mysql tuner 报告 mySQL 可以使用 166% 的已安装内存,我如何限制内存使用?
[!!] 最大可能内存使用量:426.8M(已安装 RAM 的 166%)
在我们的一台 Debian 服务器上对 LVM 进行压力测试时,我遇到了这个问题,即内存会被大量填满,导致服务器内存不足,但没有进程会占用内存。有关htop 中使用的颜色的说明,请参见http://i.imgur.com/cLn5ZHS.png,并参见https://serverfault.com/a/449102/125894。
为什么会这样?
有什么方法可以查看正在使用内存的进程吗?
htop 被配置为不隐藏任何进程,那么 htop 缺少什么?
在这种特殊情况下,我可以肯定地说它是由 lvmcreate、lvmremove 或 dmsetup 直接或间接引起的,因为我正在对其进行压力测试。请注意,这个问题不是关于解决 LVM 问题,而是关于为什么任何进程都没有声明内存。停止所有 LVM 命令确实会将内存降低到 <600MB。
的输出free -m:
total used free shared buffers cached
Mem: 32153 31958 194 0 52 3830
-/+ buffers/cache: 28075 4077
Swap: 975 0 975
Run Code Online (Sandbox Code Playgroud)
由于它的长度,顶部的输出,在 pastebin 上:http : //pastebin.com/WchrpF7W
Memtest86+ - http://www.memtest.org
Memtester - http://pyropus.ca/software/memtester/
我正在查看上述内存测试工具。
这两者有什么区别?(应该在哪方面用不同的方式?)
我们有一些 64 位 Linux 机器 (RHEL6) 在 Microsoft Windows 2012 Server (Hypervisor) 上运行,但存在同样的问题。这些 Linux 来宾服务器在 MS Windows Cloud (Hyper-V) 中运行,其中有 16 个主机服务器,每个服务器具有 256 GB 的 RAM。
它们从以下内存使用情况开始:
# free -m
total used free shared buffers cached
Mem: 48259 653 47606 0 19 106
-/+ buffers/cache: 527 47732
Swap: 13999 0 13999
# cat /proc/meminfo
MemTotal: 49418204 kB
MemFree: 48749868 kB
Buffers: 20080 kB
Cached: 108564 kB
SwapCached: 0 kB
Active: 149652 kB
Inactive: 98856 kB
Active(anon): 120124 kB
Inactive(anon): 1884 …Run Code Online (Sandbox Code Playgroud) CPU [ 0.0%] Tasks: 15, 2 thr; 1 running
Mem [|||| 14/256MB] Load average: 0.00 0.00 0.00
Swp [| 1/256MB] Uptime: 15 days, 06:02:31
Run Code Online (Sandbox Code Playgroud)
以上是没有 Ghost 实例时我的服务器(Ramnode,256MB RAM 和 256MB Swap)上的内存使用情况。在我的 VPS 上,我正在运行 4 个Ghost实例。
因此,当我使用命令在此处运行 Ghost 实例时node index.js,它会生成 5 个工人。
PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command
10380 user 20 0 975M 80328 7712 S 0.0 30.6 0:00.00 node index.js
10381 user 20 0 975M 80328 7712 S 0.0 30.6 …Run Code Online (Sandbox Code Playgroud) memory ×10
linux ×3
ubuntu ×2
apache-2.2 ×1
ghost-blog ×1
hyper-v ×1
java ×1
lvm ×1
memory-leak ×1
memory-usage ×1
monitoring ×1
mysql ×1
nginx ×1
node.js ×1
php ×1
php5 ×1
swap ×1
test ×1
tomcat ×1
vmware-esx ×1