注意:我已阅读Windows 服务器需要重新启动的频率?但是这个问题特别与我们的远程桌面服务器有关。
我们有一台 Windows Server 2008R2 服务器 - 一台 VMware ESX VM - 获得远程桌面服务许可,25 个用户也执行 RRAS (SSTP)。在平均工作日,在工作时间内,有 8 到 12 个登录的活跃用户以及 4-6 个“断开连接”的用户。它具有 12 GHz CPU 硬预留和 16 GB RAM,也完全预留。需要时,CPU 预留可扩展至最大 24 GHz。
我们的许多用户完全依赖服务器来工作。他们也对它的性能抱怨不已,但许多人不愿意改变工作习惯或软件来提高其性能。具体来说:
我不能夸大他们拒绝注销的重要性。断开连接的用户在断开连接时继续占用 RAM,这意味着在任何给定时间,我们有多达 16 个正在运行的某些程序实例。
我还根据经验注意到,远程桌面服务器运行的时间越长,泄漏/僵尸事件的累积就越多。重新启动后,即使在许多用户登录后比较性能时,服务器也是新鲜的并且速度更快。我还读到定期重新启动可能会有所帮助。
所以我建议定期重启虚拟机——我想每周重启一次,比如周六晚上——因为我觉得这些重启可以解决很多问题。
我想知道,如果您是 Windows 管理员,
即使在用户断开连接/重新连接之后,垃圾/僵尸/泄漏也会随着会话时间的推移而累积这一事实是否正确?
多久你重新启动一个类似的充分利用的Windows Server远程桌面服务?
remote-desktop-services windows-server-2008-r2 cpu-usage memory-usage lync
我一直在使用 ASP.NET v 4.0 应用程序遇到非常间歇性的问题,可能每 4 天就会发生一次,发生的情况是 CPU 会飙升至 75%,有时会运行良好,直到一天结束有时它会稳步增长到 100 %
然后我必须重新启动服务器。
我遵循了“当工作进程处于 100% CPU 时该怎么办”的每一个指南,我知道它是哪个工作进程,它是哪个应用程序池。我所能做的就是找到该进程并杀死它或回收应用程序池,这有时会有所帮助。
我不知道的是在 CPU 达到 75% 的那一刻系统上发生了什么。
我想知道有没有一种方法可以在 CPU 达到 50% 时启动 procmon 并运行 2 分钟,然后关闭并保存数据?
我有一台运行 Windows 2008 64 位 Hyper-V 的服务器,具有 8 演出内存和 Intel Xeon X3440 @ 2.53 Ghz,这在主机系统的性能监视器中为我提供了 8 个逻辑内核。
我已经设置了三个虚拟机,都运行 Windows 2008 32 位。
我在设置方面遇到了一些麻烦,因为主机监视器始终保持响应,即使 VM 似乎以 100% 的 CPU 运行并且非常缓慢和无响应。(我已经问过一个单独的问题。)
所以这里的问题是:监控物理 CPU 实际使用情况的最佳方法是什么?我问的原因是有人告诉我我无法可靠地使用任务管理器来监视 VM 中的 CPU 使用情况。
作为序言,我在 AMD64 芯片组上使用带有内核 3.2 的 Debian Wheezy。我的机器有两个至强 E5-2690 内核。我设置了启动参数,以便一个 CPU 上的所有内核专用于单个进程。为此,我在 grub 中设置了 isolcpus=8,9,10,11,12,13,14,15。
到现在为止还挺好。现在假设我想对给定命令使用隔离的 CPU,简单地说,我将使用一个简单的无限循环:
$ taskset -c 8-15 bash -c 'while true ; 做回声你好>/dev/null; 完毕' &
到目前为止一切顺利,top 表明核心 8 的利用率接近 100%。现在假设我再次启动该命令:
$ taskset -c 8-15 bash -c 'while true ; 做回声你好>/dev/null; 完毕' &
现在 top 显示内核 9-15 保持空闲并且两个进程共享内核 8。如果相反,我这样做:
$ taskset -c 8 bash -c 'while true ; 做回声你好>/dev/null; 完毕' &
$ taskset -c 9 bash -c 'while true ; 做回声你好>/dev/null; 完毕' &
核心 8 和 9 各获得 …
我的 LAMP 服务器遇到了一些问题。最近一切都变得非常缓慢,尽管我网站上的访问者数量没有太大变化。当我运行top命令时,它说 MySQL 进程占用了 150-200% 的 CPU。这怎么可能,我一直认为 100% 是最大值?
我正在运行具有 1.5 GB RAM 的 Ubuntu 9.04 服务器版。
my.cnf 设置:
key_buffer = 64M
max_allowed_packet = 16M
thread_stack = 192K
thread_cache_size = 8
myisam-recover = BACKUP
max_connections = 200
table_cache = 512
table_definition_cache = 512
thread_concurrency = 2
read_buffer_size = 1M
sort_buffer_size = 4M
join_buffer_size = 1M
query_cache_limit = 1M # the maximum size of individual query results
query_cache_size = 128M
Run Code Online (Sandbox Code Playgroud)
这是MySQLTuner的输出:

该top命令:

这个问题的原因可能是什么?我可以更改我的my.cnf …
大多数情况下,当我的计算机开始需要交换时,我会看到 CPU 使用率大幅飙升(kswapd0始终使用 99%-100% CPU)。根据top,时间花在sy(系统/内核)而不是wa(IO等待)上。
我在具有 2GB RAM 的 C720 上运行 Linux 4.0.4-2-ARCH,在 SSD 上运行 6GB 交换。
无论是否打开丢弃页面(TRIM),我似乎都有这个问题。
是否有任何设置我应该检查或调整以查看是否可以解决此问题?
有什么办法可以调试问题吗?类似于strace内核线程?
使用默认的 Arch Linux 设置运行:
/proc/sys/vm/swappiness= 60
/proc/sys/vm/vfs_cache_pressure= 100
/sys/kernel/mm/transparent_hugepage/enabled=[always] madvise never
我在 java 进程和 nrpe 检查方面遇到了一些问题。我们有一些进程有时会在 32 核系统上使用 1000% 的 CPU。系统非常敏感,直到您执行
ps aux
Run Code Online (Sandbox Code Playgroud)
或者尝试在 /proc/pid# 中做任何事情,比如
[root@flume07.domain.com /proc/18679]# ls
hangs..
Run Code Online (Sandbox Code Playgroud)
一串ps
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2819, ...}) = 0
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=2819, ...}) = 0
stat("/dev/pts1", 0x7fffb8526f00) = -1 ENOENT (No such file or directory)
stat("/dev/pts", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
readlink("/proc/15693/fd/2", "/dev/pts/1", 127) = 10
stat("/dev/pts/1", {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 1), ...}) = 0
write(1, "root 15693 15692 0 06:25 pt"..., 55root 15693 15692 0 06:25 pts/1 00:00:00 ps -Af
) = 55
stat("/proc/18679", …Run Code Online (Sandbox Code Playgroud) 我正在尝试对 dd 命令的 CPU 使用率进行硬限制。我创建了以下单元文件
[Unit]
Description=Virtual Distributed Ethernet
[Service]
ExecStart=/usr/bin/ddcommand
CPUQuota=10%
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
调用以下简单脚本
#!/bin/sh
dd if=/dev/zero of=/dev/null bs=1024k
Run Code Online (Sandbox Code Playgroud)
正如我在本指南中看到的,我的dd服务的 CPU 使用率不应超过 10%。但是当我运行system-cgtop命令时,使用率约为 70-75% 。
关于我做错了什么以及如何解决它的任何想法?
当我执行时,systemctl show dd我得到以下关于 CPU 的结果
CPUShares=18446744073709551615
StartupCPUShares=18446744073709551615
CPUQuotaPerSecUSec=100ms
LimitCPU=18446744073709551615
Run Code Online (Sandbox Code Playgroud) 我有 2 个虚拟机作为来宾运行在 Ubuntu 10.04 上运行的 KVM 虚拟化平台上。一个VM是Ubuntu 10.04系统,另一个是Windows 7系统。根据 top 的说法,当两台机器都完全注销时,Linux 机器使用 1% 的 CPU,Windows 机器使用 45-50%。virt-manager 中的图表似乎支持这一点。在后台运行的 Win7 映像上没有安装任何东西;它尽可能新鲜。
为什么 Windows VM 在注销和空闲时使用的比 Linux VM 多得多?
编辑:
我从一开始就使用 paravirt 存储和网络驱动程序安装了来宾。我不相信我还缺少其他任何驱动程序,我错了吗?
根据客人的任务管理器,它确实是空闲的。Taskman 大约占用来宾 CPU 的 1% 或 2%,但没有其他进程占用任何 CPU 时间。
我想问题是,我可以通过读取一次 /proc/stat 以某种方式计算 CPU 利用率百分比吗?
# head -1 /proc/stat
cpu 67891300 39035 6949171 2849641614 118251644 365498 2341854 0
Run Code Online (Sandbox Code Playgroud)
我正在考虑总结除 IOWait 之外的列(我在某处阅读它被计算在空闲状态),这会给我 100% 并且每个单独的列都可以通过 (column/100_percent)*100 转换为百分比。
这是一种可行的方法还是我完全偏离了轨道?