我们一直在托管公司的 VM 上运行服务器,并且刚刚注册了专用主机(AMD Opteron 3250,4 核,8GB RAM,软件 RAID 中的 2 x 1TB,ext3)。
在运行性能测试时,我们注意到一些 SQLite 转换(插入、删除和/或更新的组合)比我的 2010 MacBook Pro 花费的时间长 10 到 15 倍。
经过大量的谷歌搜索和阅读,我们开始查看挂载选项,它们是:
data=ordered,barrier=1Run Code Online (Sandbox Code Playgroud)
我们做了一些实验,并获得了最佳性能
data=writeback,barrier=0Run Code Online (Sandbox Code Playgroud)
我已经阅读了这些内容,并了解他们正在做的事情的基础知识,但我对我们这样跑步是否是个好主意没有很好的感觉/感觉?
对于托管服务,上述配置是否明智?
如果我们遇到停电或严重崩溃,那么我们最终可能会丢失数据或文件损坏。如果我们每 15 分钟拍摄一次数据库快照,这可能会缓解这种情况,但拍摄快照时数据库可能不会同步。我们应该(可以?)如何确保这种快照的完整性?
我们应该考虑其他选择吗?
谢谢
我在大量虚拟化服务 (Azure) 和产品 (vmware、kvm、hyperv) 上看到 I/O 和系统在繁重的 I/O 工作负载下停顿。
我的问题是:
根据 vmstat,我的 Linux 服务器(2xCore2 Duo 2.5 GHz)每秒持续进行大约 20k 次上下文切换。
# vmstat 3
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
2 0 7292 249472 82340 2291972 0 0 0 0 0 0 7 13 79 0
0 0 7292 251808 82344 2291968 0 0 0 184 24 20090 1 1 99 0
0 0 7292 251876 82344 2291968 0 0 0 83 17 20157 1 0 …Run Code Online (Sandbox Code Playgroud) performance-monitoring kernel performance-tuning vmstat context-switch
我希望了解我在(对我们而言)负载较重的 Web 服务器上看到的一些服务器性能问题。环境如下:
我们看到的行为是,网络通常感觉是响应式的,但开始处理请求会有轻微的延迟——有时是几分之一秒,有时是我们高峰使用时间的 2-3 秒。服务器上的实际负载报告为非常高 - 通常为 10.xx 或 20.xx,如top. 此外,在这些时间(甚至vi)在服务器上运行其他东西非常慢,所以负载肯定在那里。奇怪的是 Apache 仍然非常敏感,除了最初的延迟。
我们使用 prefork 将 Apache 配置如下:
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
Run Code Online (Sandbox Code Playgroud)
和 KeepAlive 为:
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
Run Code Online (Sandbox Code Playgroud)
查看服务器状态页面,即使在这些负载很重的时候,我们也很少达到客户端上限,通常处理 80-100 个请求,其中许多请求处于保持活动状态。这告诉我将初始请求缓慢排除为“等待处理程序”,但我可能错了。
Amazon 的 CloudWatch 监控告诉我,即使我们的操作系统报告的负载大于 15,我们的实例 CPU 利用率也在 75-80% 之间。
示例输出top:
top - 15:47:06 up 31 days, 1:38, 8 users, load average: 11.46, …Run Code Online (Sandbox Code Playgroud) 我有一台机器有几个虚拟机 (5) 和 3 个物理网卡(每个有 2 个端口),总共有六个 1Gbps 以太网端口。
我有一个支持 SPF 的交换机,总共有 48Gbps 的带宽和一个 10Gbps 的 SPF 链接。服务器还有一个 SPF 端口 (10Gbps)。
我很好奇最好的设置是什么,性能明智(充分利用每一点,最少的 cpu 使用)以及为什么。
将所有 VM 连接到一个 SPF 端口然后连接到交换机上的 SPF 端口会更好,还是应该获得 5 根以太网电缆并将它们连接到网络交换机上的 5 个端口?
如果还有点不清楚,想象一下这个场景:
Switch上的两台PC要分别从VM A下载一个大文件,第二台PC要从VM B下载。如果它们通过以太网连接,每个PC都有自己的连接,因此VM A的连接将切换到PC A ,同时来自VM B的连接将切换到PC B,对吗?如果您将两个 VM 都连接到 SPF,那么 SPF 端口将在 PC A 和 B 之间切换。
那么哪种情况在最大负载下表现最好?为什么?
编辑:我想保持这个相当通用,以便它可以应用于全局场景,但已经询问了设置的详细信息,它们是:
服务器:PowerEdge T620
SPF 卡:PEX10000SFP 10 千兆位
NIC:3 个 NetXtreme BCM5720
操作系统:XenServer 6.2
CPU:至强 E5-2609
交换机:T1600G-28TS
客户操作系统:Debian Wheezy (PV)
当虚拟机 Linux 主机服务器不面向 Internet 并且仅在 LAN 上使用并且使用经过相对良好测试的发行版(如 Proxmox)时,通过内核 arg 关闭所有漏洞缓解措施会有多危险mitigations=off?
此外,是否有人测试过关闭所有此类缓解措施可能会带来哪些性能提升?
最近,当我看到缓解措施造成的巨大打击时,这对我来说成为一个问题retbleed: https: //www.phoronix.com/review/retbleed-benchmark
这种思路延伸到了对通过上述内核参数或单独关闭高影响缓解措施来删除所有或部分缓解措施可能产生的后果(无论是坏的还是积极的)的好奇心。
在 ubuntu 上运行 postfix,每天发送大量邮件(约 100 万条消息)。负载非常高,但在 CPU 和内存负载方面并不多。任何处于类似情况并知道如何消除瓶颈的人?
此服务器上的所有邮件都是出站的。
我不得不假设瓶颈是磁盘。
只是一个更新,这里是 iostat 的样子:
avg-cpu: %user %nice %system %iowait %steal %idle
0.00 0.00 0.12 99.88 0.00 0.00
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 12.38 0.00 2.48 0.00 118.81 48.00 0.00 0.00 0.00 0.00
sdb 1.49 22.28 72.28 42.57 629.70 1041.58 14.55 135.56 834.31 8.71 100.00
Run Code Online (Sandbox Code Playgroud)
这些数字是否符合您对单个磁盘的预期性能?
sdb 专用于 postfix。
我认为这是队列改组,从传入->活动->延迟
问题的更多详细信息:
服务器:四核 Xeon(R) CPU E5405 @ 2.00GH with 4 GB ram
平均负载:464.88、489.11、483.91、4 核。但内存利用率和 …
我有一个 Ubuntu VM,在基于 Ubuntu 的 Xen XCP 中运行。它托管基于 FCGI 的自定义 HTTP 服务,位于nginx.
下从负载ab 第一CPU芯饱和,其余为欠载。
在/proc/interrupts我看来,CPU0 提供的中断比任何其他内核都多一个数量级。他们中的大多数来自eth1.
我可以做些什么来提高此 VM 的性能?有没有办法更均衡地平衡中断?
血腥细节:
$ uname -a
Linux MYHOST 2.6.38-15-virtual #59-Ubuntu SMP Fri Apr 27 16:40:18 UTC 2012 i686 i686 i386 GNU/Linux
$ lsb_release -a
没有可用的 LSB 模块。
分销商 ID: Ubuntu
描述:Ubuntu 11.04
发布:11.04
代号:natty
$ cat /proc/interrupts
CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7
283:113720624 0 0 0 0 0 0 0 xen-dyn-event … 我一直在努力提高我的 OpenVPN 性能,这是我当前的设置:
cat /etc/openvpn/server.conf
port 443 #- port
proto tcp #- protocol
dev tun
#tun-mtu 1500
tun-mtu-extra 32
#mssfix 1450
tun-mtu 64800
mssfix 1440
reneg-sec 0
ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
cert /etc/openvpn/easy-rsa/2.0/keys/server.crt
key /etc/openvpn/easy-rsa/2.0/keys/server.key
dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem
plugin /etc/openvpn/openvpn-auth-pam.so /etc/pam.d/login
#plugin /usr/share/openvpn/plugin/lib/openvpn-auth-pam.so /etc/pam.d/login #- Comment this line if you are using FreeRADIUS
#plugin /etc/openvpn/radiusplugin.so /etc/openvpn/radiusplugin.cnf #- Uncomment this line if you are using FreeRADIUS
client-to-client
client-cert-not-required
username-as-common-name
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive …Run Code Online (Sandbox Code Playgroud) 在我的实验室中有一个用于测量的服务器在 Ubuntu 上运行。还有C程序,它通过TCP连接接收数据,并应尽快发送回复。
配置
接收数据包时的网络延迟非常关键(几十微秒很重要)。我最大限度地优化了程序,但我没有调整 Ubuntu 的经验。
在Ubuntu中可以配置什么来减少处理/发送数据包的本地延迟?
linux ×4
performance ×4
networking ×2
ubuntu ×2
vmstat ×2
amazon-ec2 ×1
apache-2.2 ×1
centos ×1
debian ×1
ext3 ×1
high-load ×1
interrupts ×1
io ×1
kernel ×1
latency ×1
linux-kernel ×1
mount ×1
openvpn ×1
postfix ×1
security ×1
switch ×1
vpn ×1