我刚刚为asp.net MVC控制器构建了一个概念验证,以(1)使用条形码渲染框架从用户输入生成条形码,(2)使用wkhtmltopdf.exe将其嵌入到PDF文档中
在告诉我的客户这是一个有效的解决方案之前,我想知道它不会打倒他们的网站。我主要担心的是长期可靠性 - 例如,为wkhtmltopdf.exe创建和处理非托管系统进程可能会泄漏一些东西。 (峰值性能和负载不预计会出现这样的问题 - 在峰值时每分钟只有少量请求。)
因此,我从Windows命令行运行了几个测试:
(1)1,000个顺序请求(即每次1个)
for /l %i in (1,1,1000) do curl ^
"http://localhost:8003/Home/Test?text=Iteration_%i___012345&scale=2&height=50" -o output.pdf
(2)在2秒内发送最多40个请求
for /l %i in (1,1,40) do start "Curl %i" curl ^
"http://localhost:8003/Home/Test?text=Iteration_%i___012345&scale=2&height=50" -o output%i.pdf
我在perfmon之前,之中和期间记录了一些性能计数器。后。具体来说,我会专门查看计算机和IIS进程上的总进程,线程,句柄,内存,磁盘使用情况。
所以,我的问题:
1)您认为该解决方案降低服务器风险的可接受证据是什么?你会修改我所做的,或者你会做一些完全不同的事情吗?
2)鉴于我对可靠性的关注,我认为'之前'与'之后'数字是我最关心的数字。同意与否?
3)看看之前与之后的数据,我看到的唯一问题是“处理总处理数”。我得出结论,启动wkhtmltopdf.exe将近一千次可能没有泄露任何东西或破坏了机器的稳定性。但我可能错了,应该在几小时或几天内进行相同的测试以降低怀疑程度。同意与否?
(风险等级:如果它变成梨形,那么几个人的工作可能会在线。网站的收入是每小时1,000英镑。
我的perfmon结果如下。
序列中的700个请求
1-5 Mins 10 Mins
Counter Before Test Min Ave Max After Test
System
System Processes 95 97 100 101 95
System Threads 1220 1245 1264 1281 1238
Memory Available MB 4888 4840 4850 4868 4837
Memory % Committed 23 24 24 24 24
Processes Total Handle Cou 33255 34147 34489 34775 34029
Processor % Processor Time 4 to 30 40 57 78 1 to 30
Physical Disk % Disk Time 1 0 7 75 0 to 30
IIS Express
% Processor Time 0 0 2 6 0
Handle Count 610 595 640 690 614
Thread Count 34 35 35 35 35
Working Set 138 139 139 139 139
IO Data KB/sec 0 453 491 691 0
在2秒内发送20个请求,然后在3秒内发送40个请求
1-5 Mins 10 Mins
Counter Before Test Min Ave Max After Test
System
System Processes 95 98 137 257 96
System Threads 1238 1251 1425 1913 1240
Memory Available MB 4837 4309 4694 4818 4811
Memory % Committed 24 24 25 29 24
Processes Total Handle Cou 34029 34953 38539 52140 34800
Processor % Processor Time 1 to 30 1 48 100 1 to 10
Physical Disk % Disk Time 0 to 30 0 7 136 0 to 10
IIS Express
% Processor Time 0 0 1 29 0
Handle Count 610 664 818 936 834
Thread Count 34 37 50 68 37
Working Set 138 139 142 157 141
IO Data KB/sec 0 0 186 2559 0