我在 Win2003 32 位上运行一个 ASP.NET 应用程序,它往往会分配大量内存。为了避免在 W3P 进程超过 1 GB 时开始出现 OutOfMemoryExceptions,我为此应用程序池设置了 850 MB 的最大虚拟内存限制,因此应用程序将重新启动而不是抛出异常。
虽然不会抛出异常,但这些重启仍然会导致暂时的性能退化(低缓存命中率、aspx 编译等),所以我想尽量减少重启的次数。观察性能计数器,我可以看到 ASP.NET 缓存按设计工作(项目计数和缓存命中率在启动后增加,而某些项目可能由于到期日期而被删除),除了缓存修整。
例如 我希望缓存修整在例如 750 MB 正在使用并且其中一半是缓存时启动。但它永远不会发生,在负载下它会继续分配越来越多的内存,而不是例如丢弃低优先级缓存项,直到达到内存限制。
有人知道什么会真正触发缓存修剪吗?可用物理内存?是否有任何其他设置可用于优化此场景?
(是的,我知道,32 位是 2004 年,使用 x64 这个问题会消失,甚至可能使用相同数量的内存,但对于这个应用程序,我在这台服务器上又卡住了几个月,必须保持它跑步...)
服务器有 4GB 的 RAM,我的 zpool 由 15.5k SAS 驱动器组成,排列如下:
NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
c0t2d0 ONLINE 0 0 0
c0t3d0 ONLINE 0 0 0
c0t4d0 ONLINE 0 0 0
c0t5d0 ONLINE 0 0 0
c0t6d0 ONLINE 0 0 0
c0t7d0 ONLINE 0 0 0
c0t8d0 ONLINE 0 0 0
raidz1-1 ONLINE 0 0 0
c0t10d0 ONLINE 0 0 0
c0t11d0 ONLINE 0 0 0
c0t12d0 ONLINE 0 0 0
c0t13d0 …Run Code Online (Sandbox Code Playgroud) 我正在尝试为一个小型 VPS 优化我的 MySQL 配置。VPS 还运行 NGINX/PHP-FPM 和 Magento;所有这些都限制为 250MB 的 RAM。
这是 MySQL Tuner 的输出...
-------- General Statistics --------------------------------------------------
[--] Skipped version check for MySQLTuner script
[OK] Currently running supported MySQL version 5.1.41-3ubuntu12.8
[OK] Operating on 64-bit architecture
-------- Storage Engine Statistics -------------------------------------------
[--] Status: -Archive -BDB -Federated +InnoDB -ISAM -NDBCluster
[--] Data in MyISAM tables: 1M (Tables: 14)
[--] Data in InnoDB tables: 29M (Tables: 301)
[--] Data in MEMORY tables: 1M (Tables: 17)
[!!] Total fragmented tables: …Run Code Online (Sandbox Code Playgroud) 我可以使用哪些用于缓存的好的模块或系统来减少运行 PHP 的 EC2 服务器上的 Apache 负载,为什么要选择它们?
我正在 Linux 服务器(内核 2.6.37、16 核、32G RAM)上的 2 个文件系统之间复制大文件(3 x 30G),但性能很差。我怀疑缓冲区缓存的使用正在扼杀 I/O 性能。
为了尝试缩小问题的范围,我直接在 SAS 磁盘上使用 fio 来监控性能。
这是 2 次 fio 运行的输出(第一次直接=1,第二次直接=0):
配置:
[test]
rw=write
blocksize=32k
size=20G
filename=/dev/sda
# direct=1
Run Code Online (Sandbox Code Playgroud)
运行 1:
test: (g=0): rw=write, bs=32K-32K/32K-32K, ioengine=sync, iodepth=1
Starting 1 process
Jobs: 1 (f=1): [W] [100.0% done] [0K/205M /s] [0/6K iops] [eta 00m:00s]
test: (groupid=0, jobs=1): err= 0: pid=4667
write: io=20,480MB, bw=199MB/s, iops=6,381, runt=102698msec
clat (usec): min=104, max=13,388, avg=152.06, stdev=72.43
bw (KB/s) : min=192448, max=213824, per=100.01%, avg=204232.82, stdev=4084.67
cpu : …Run Code Online (Sandbox Code Playgroud) 我正在运行从 mysql.com 下载的 MySQL 5.5.9 x86_64 RPM。在 CentOS 5.5 Xen DomU 上运行。
我启用了 Query_cache 但是 MySQL 从不使用它。我所有的表都是 InnoDB。为什么 Qcache 从不命中?
更新 2:我发现这仅限于名称中带有 - 的模式。创建一个新架构,例如 new-db,查询缓存失败。不幸的是,我有 148 个现有的 Schama,它们的名字中都带有“-”。
更新这似乎仅限于从以前版本的 MySQL (5.0.32) 转储和导入的模式 创建新模式并在此查询缓存中查询表按预期工作。
这是我的 Qc 工作和不工作的设置和示例。
mysql> SHOW VARIABLES LIKE '%query_cache%';
+------------------------------+-----------+
| Variable_name | Value |
+------------------------------+-----------+
| have_query_cache | YES |
| query_cache_limit | 2097152 |
| query_cache_min_res_unit | 4096 |
| query_cache_size | 536870912 |
| query_cache_type | ON |
| query_cache_wlock_invalidate | OFF |
+------------------------------+-----------+ …Run Code Online (Sandbox Code Playgroud) 我们一直在运行 nginx -> uWSGI,现在我们正在评估将 Varnish 作为 nginx 和 uWSGI 之间的缓存层(类似于 http://www.heroku.com/how/architecture)。
但是,nginx 只支持背面的 HTTP 1.0,因此它必须为每个请求创建与 Varnish 的新连接。
许多人建议在 Varnish 之前运行 nginx,但是使用像 Cherokee 这样的东西来消除 HTTP 连接开销不是更有意义,因为它在后面支持 HTTP 1.1?
有没有办法将特定文件夹映射到内存?假设我有 C:\somePath 并且我希望该文件夹始终在内存中,并且可能会在没有我通知的情况下将更改异步转储到 HDD。所以这更像是在内存中强制缓存 HDD 内容......对于 Windows 7 或任何 Windows 操作系统?
我知道这听起来很奇怪,但我需要一个更慢或缓存的文件系统。
我有很多防火墙将它们的数据系统记录到一对 Linux 虚拟机,这些虚拟机将这些文件写入它们的“本地”(实际上是 FC SAN 连接)ext3 格式的磁盘,并将消息转发到我们的 Splunk 服务器。
问题是 syslog 服务器正在将这些 syslog 消息以每秒数百次甚至数千次约 4k 的微小写入写回我们的 FC SAN——它现在可以处理这种工作负载,但我们的 FW 流量将至少增长在未来几个月内(真的)增加 5000% 的因素,这对 SAN 来说是一个痛苦,我想在问题出现之前解决根本原因。
所以我需要一些帮助来找出一种方法,以某种方式从“物理”磁盘中缓存或延迟这些写入,以便 VM 触发更大但不那么频繁的写入 - 没有办法避免这些写入,但是有不需要它做这么多小事。
我查看了各种 ext3 选项,设置了 noatime 和 nodiratime 但这并没有对问题造成太大影响。显然,我正在调查其他文件系统,但我想我会把它扔掉,以防其他人将来遇到同样的问题。
哦,我不能只是将这些消息转发到 Splunk,我们的防火墙团队坚持认为它们采用原始格式以用于诊断目的。
cache ×10
linux ×3
mysql ×2
32-bit ×1
amazon-ec2 ×1
apache-2.2 ×1
arp ×1
asp.net ×1
cherokee ×1
directory ×1
ext3 ×1
filesystems ×1
hard-drive ×1
http ×1
innodb ×1
io ×1
linux-kernel ×1
magento ×1
memory ×1
nginx ×1
optimization ×1
php ×1
ssd ×1
varnish ×1
windows ×1
zfs ×1