背景:
在做一个 Citrix 虚拟化项目问题,在虚拟化使用过程中有用户提出有应用系统在物理机中速度正常,在虚拟化环境中登陆需要几十秒,然后就安排工程师去跟踪排查问题,最后说原因定位到了“ WebUIValidation.js ”,看了一下,确实诡异,搞不明白,求助!!!
现象:
1 、在物理机中登录 http 抓包如下:
可以看到, assofflogin.aspx 之行后就开始加载图片了。
2 、在虚机中登陆,结果就变了,在 assofflogin.aspx 之后会执行 WebUIValidation.js ,这个 js 第一次加载 90%情况下会失败,持续时间 20 秒左右。之后会出现多种可能性:
1.1 、第一次失败后,反复尝试 3-5 次,一直失败,然后不执行 js ,直接开始加载图片;
1.2 、失败几次后,会成功执行 WebUIValidation.js 后,加载图片;
1.3 、极其个别的情况下 WebUIValidation.js 会一次执行通过;或者,与物理机情况一直,没有执行这个 js 。
可以确定的就是: WebUIValidation.js 导致了在虚拟化环境中登陆慢的问题。
最初怀疑是 WebUIValidation.js 在服务器中没有这个文件,但是在 IE 中用完整路径尝试后,是可以下载到这个 js 的,并不是 404 什么。
所以,不明白的是:
1 、为什么在物理机登陆不需要执行此 js ?
2 、为什么在虚拟化环境中登陆,会出现很多的可能性,当然 js 反复执行多次后还是没有回包的情况最多;
3 、此系统运维商找不到人,服务器在北京,现在的情况是,找不到运维的、开发的,也暂时没法接触到服务器(正在协调找人);
4 、用户的态度是:物理机正常,虚拟化环境有问题,那就是你虚拟化的问题,你们就要排查清楚😭
求高人指点,已经要崩溃了。
以下是与 WebUIValidation.js 有关的代码片段:
</HEAD>
<body MS_POSITIONING="GridLayout" BGCOLOR="#ffffff" leftmargin="0" topmargin="0">
<form name="index99" method="post" action="assofflogin.aspx" language="javascript" onsubmit="if (!ValidatorOnSubmit ()) return false;" id="index99">
<input type="hidden" name="__VIEWSTATE" value="dDwtMjEzNTk2MDUwODt0PDtsPGk8MT47PjtsPHQ8O2w8aTwxNT47PjtsPHQ8QDA8Ozs7Ozs7Ozs7Oz47Oz47Pj47Pj47bDxMb2dpbjs+Pn2zs1WO22R8mQ8wwaoOGEQS/SHk" />
<script language="javascript" type="text/javascript" src="/aspnet_client/system_web/1_1_4322/WebUIValidation.js"></script>
<TABLE WIDTH="777" BORDER="0" CELLPADDING="0" CELLSPACING="0" align="center">
<TR>
<TD colspan="3">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
1
frozen2013 2015-09-19 00:19:12 +08:00
随手搜 WebUIValidation.js ,发现这东西跟.net 相关的
http://scottonwriting.net/sowblog/archive/2004/11/03/163009.aspx The WebUIValidation.js file, as you know, contains client-side JavaScript functions for client-side validation. It is automatically injected into a page when: The page contains one or more validation Web controls. The page is being visited by an “ uplevel ” browser. 根据以上信息,这个东西是有条件加载的,我猜你遇到的问题是物理机上符合不加载的条件,虚拟环境符合加载条件但加载遇到困难。 最好还是问写这个服务的工程师吧。 |
2
lonelygo OP @frozen2013 嗯,这个 js 看名字就应该是校验用途。
虚拟环境中如果连续刷新,会出现某一次不执行 js 的情况,也会出现 5 次执行不过去就丢弃不执行的情况。 大多数情况是,执行 2-3 次,收到回包,执行通过。 现在的难题在于:找不到写这个服务的码农了,运维的人都很难找到。 如果能接触到服务器,我倒是想尝试注释了这句话看看结果。 |