问题标签 [intermittent]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Tomcat服务器中奇怪的间歇性字符编码行为
在我们的生产环境中,我们时常会遇到一个非常奇怪的 Tomcat 编码问题。
我还不能准确指出问题发生在代码中的哪个位置,但它涉及将非 ascii 字符替换为近似的 ascii 字符。
例如,将字符 'å' 替换为 'a'。由于该站点是瑞典语,因此字符“å”、“ä”和“ö”很常见。但是由于某种原因,替换 'ö' 字符总是有效的,所以像“Köp inte grisen i säcken”这样的字符串变成了“Kop inte grisen i säcken”,即 'ä' 没有被替换,而 ' ö' 字符是。
关于这个问题的一些快速事实:
它很少发生(我们已经注意到它 3-4 次,第一次可能是 1-2 年前)。
重新启动有问题的服务器会使问题消失(直到下一次)。
它从来没有同时发生在一个以上的前端服务器上。
它并不总是发生在同一个前端服务器上。
不涉及前端的用户输入。
所有前端服务器都连接到相同的 CMS 和 DB,相关配置相同。
所有前端服务器都具有相同的相关配置(linux 配置、tomcat 配置、java 环境配置,如“file.encoding”等),并使用相同的脚本启动(全部根据托管/服务提供商)。
所有前端服务器都使用相同的站点战争文件和相同的 jar 文件。
发生此字符替换问题时,在站点上看不到其他编码问题。
我们从未能够在任何其他环境中重现该问题。
由于 CMS 要求,我们使用 Tomcat 5.5 和 Java 5。
对于这种行为,我只能想到两个可能的原因:
托管服务提供商有时会以不同的方式启动/重新启动前端服务器,可能是使用具有其他环境变量或其他文件访问权限的另一个用户帐户,或者可能使用不同于正常脚本的其他脚本。
在 Tomcat 或 webapp 启动期间运行的某些进程依赖于其他进程,有时(间歇但很少)这两个(或更多)进程碰巧以导致此编码缺陷的顺序运行。
但即使上面的 1 或 2 是这种情况,它仍然不能完全解释真正发生的事情。有什么确切的区别可以解释这一点?由于所有“file.encoding”、“file.encoding.pkg”、“sun.io.unicode.encoding”、“sun.jnu.encoding”和所有其他相关环境变量在所有前端机器上都匹配(使用视觉验证调试页面,而问题正在发生)。
有人可以为这种奇怪的间歇性行为想出一些合理的解释吗?简单地升级 Tomcat 和/或 Java 版本并不是一个真正相关的答案,因为我们真的不知道这是否能解决问题,它仍然不能解释问题是什么。我更感兴趣的是确切地了解问题是由什么引起的。
问候/吉米
更新:
我想我找到了执行字符替换的代码。在初始化时(由第一次调用来进行替换)它构建一个 HashMap<Character, String>,并像这样填充它:
然后,当它应该替换字符串的字符时,它会遍历每个字符,并以字符为键在哈希映射中查找每个字符,如果找到替换字符串,则使用它,否则使用原始字符.
这部分代码已经有 3 年多的历史了,并且是由一个早已不复存在的开发人员编写的。如果我今天重写这段代码,我会做一些完全不同的事情,这甚至可以解决问题。但它仍然无法准确解释发生了什么。有人可以看到一些可能的解释吗?
iis - 间歇性 ColdFusion 404 错误页面,有时显示连接重置/中断,有时显示错误页面
我在我们的新网站上加载了 404 页面时遇到了一个奇怪的问题。我们刚刚将站点从 ColdFusion 8 单实例设置迁移到 ColdFusion 10 设置,其中运行了 3 个 ColdFusion 实例。这是在带有 Windows Server 2008 R2 的 IIS 7.5 上运行的。IIS 站点将其 404 错误设置为加载 /404.cfm,这是从以前的服务器设置复制的设置。
问题是当您加载一个不存在的页面时,有时会加载 404 页面,有时您只会收到连接重置错误。例如,如果您访问http://www.weblisters.com/doesnotexist并反复刷新,您会看到很多次连接被重置,而其他一些时候它会显示“抱歉,找不到页面”模板。
我认为这可能是由于多个实例造成的,所以我关闭了 3 个实例中的 2 个,因此只有 1 个正在运行,并且不会影响行为。
有没有其他人对可能导致这种间歇性行为的原因有任何想法?
编辑:这是我这边发生的事情的屏幕截图。 http://screencast.com/t/0gD0lwZiRI
firefox - 无法在 FireFox 上最近发布的 webdriver 中“单击”
我在单击 Firefox 上的按钮或超链接时遇到间歇性问题。我正在使用 webdriver 版本 2.27 和 FF17。
这些按钮是简单的 html 按钮 -
我使用定位器:name=addP
对于超链接,我使用定位器作为:link=hyperlinktext
点击不会有任何异常失败,它只会突出显示按钮或链接,但不会执行实际的点击。
故障频率为3次。
谢谢天空
java - 使用 Hyperic SIGAR 获取 Java 中的系统进程列表
我试图弄清楚如何list
使用Hyperic SIGAR
. 这是我到目前为止所拥有的:
但是,这最终会在看似任意数量的迭代后引发 SIGAR 异常。例如,有一次,我得到了这个:
然后它Sigar Exception
在该行抛出了一个无效参数:
ProcExe temp = sp.getProcExe(pidList[i]);
有时,它会运行两次以上的迭代。有时,它运行不到两次迭代。我不太确定发生了什么,SIGAR
文档似乎也不是很有帮助。当我想访问 CPU 和 RAM 使用信息时,我使用了类似的方法,即获取 a Humidor
,SIGARProxy
从中获取 a,然后从SIGARProxy
. 但是,为系统进程执行此操作似乎效果不佳。我该怎么做?
javascript - 间歇性错误:什么会导致视频在 loadstart 和 durationchange 之间停止加载?
我处于间歇性错误的令人沮丧的境地。运行时,PHP 指定要显示的视频和 3 张图片。视频在页面加载800ms后开始播放,图片在视频结束后立即显示,此时用户按下一个键(对应图片的位置),按键触发一个测量反应时间的功能,存储他们选择的图片,并加载下一页,然后所有这些都再次发生,并带有新的视频和新的图片。
这一切都很好......有时。
在其他时候,我会在我期望看到视频的地方看到一个空白屏幕。有时它会立即发生,有时在成功加载多达 15 或 20 次后发生,或者介于两者之间。我正在运行 Chrome 27.0.1453.93,并使用 Chrome 的内置 javascript 控制台跟踪错误。即使视频无法加载,也不会出现 javascript 错误(使用 DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">)。
为了查明哪里出了问题,我添加了一堆事件侦听器并使用匿名函数将一些输出传递到 js 控制台日志文件,以查看视频事件的哪些阶段正在发生或未发生。至少,这是一个可靠的模式:每次视频加载失败时,都发生了 loadstart,但 durationchange 没有发生。我只是无法弄清楚是什么问题阻止了它继续!
我期待这里的回复,无论是答案,还是只是其他人证实的经历,所以我不会感到如此疯狂!我将在此处包含两个最相关的 javascript 函数,但我不确定它们会做多少好事。
css - 页面在同一浏览器中刷新时呈现不同
我有一个不寻常的问题让我发疯!我还没有找到与这个确切问题相关的问题。
我的网站上有一个页面,其中某些元素在随机页面加载时呈现不正确。例如,使用 chrome,页面将正常呈现,但在多次刷新后,标题中的基本 ul 将向下移动到正文中。有时轮播不会出现,或者导航块会滑到下一行。我也在 Firefox 上复制了这种行为。
我真的无法提供一段代码供任何人查看,因为我不知道问题出在哪里。有问题的页面是 www.Calibru.com 的索引。真正令人惊奇的是,通过使用 Chrome 开发工具,我可以将 display:none 设置为不正确的 ul,然后将 display 设置为正常,并且 ul 会再次呈现它应该在的位置。这向我表明,完全相同的 html 和 css 以某种方式呈现不同(无论使用任何脚本)。
此外,这不是服务器的问题。在本地运行代码时我遇到了同样的问题。
有谁知道这里发生了什么?
jquery - jQuery:嵌套的 $.ajax 不会间歇性地发送发布请求
我遇到了一个严重的问题,即没有间歇性发送任何请求的 ajax 帖子。
在我的脚本中,我首先向我自己的服务器发出 getJson 请求以创建数据库条目。这永远不会失败:
通过我的服务器通过 JSON 返回的一些值,我尝试将 ajax 发布请求发送到外部服务器。
但问题不在于外国服务器。我将 ajax 帖子包装在另一个 ajax 帖子中,我尝试首先将相同的请求发送到另一个调试服务器,有时似乎根本没有发布请求。
但是,如果我将数据序列化并将其放入调试发布请求的 url 中,那么这确实会发送到我的调试服务器,而实际处理服务器的后续发布不会触发。这将暗示从 getJSON 检索到的数据存在问题,但数据在形式上与有效的请求相同。
我剩下的唯一想法是这可能是 JSON 的超时问题。有任何想法吗?
caching - ColdFusion 客户端变量间歇性地显示过时的值
我们有一个旧的 ColdFusion 应用程序,它使用 150 个客户端变量来管理会话状态。客户端变量使用循环负载平衡器集中存储在 6 个应用程序服务器集群环境中的 SQL Server 数据库中。
问题是当代码用新值更新客户端变量时,即使新值在 CData 表中适当更新,旧值仍在使用和显示。这仅在使用 cfset 标记对客户端变量进行平均 1000 次更新时间歇性发生。
竞争条件和缓存问题是可能的解释。我们“怀疑”旧值仍然缓存在 6 个应用程序服务器之一上。Adobe 的文档明确指出客户端变量被缓存到内存中,但没有详细说明。
1)有没有人也遇到过这个问题并找到了一个好的解决方案?
2)当我们继续使用客户端变量时,移动到粘性会话有什么影响?
layout - CakePHP 渲染错误
我有一个 CakePHP 2.3.0 网站,我一直在努力,直到现在都没有问题。
在我的本地设置上一切正常。在我们最初的部署中,一切正常。但是现在,在新的部署中(使用与第一次部署相同的托管服务提供商),我遇到了非常奇怪的行为。
有时,我无法将其固定到任何特定的控制器/动作,我会正确渲染视图,但不会包含包装它的布局。基本上,我得到的只是视图的标记,而不是完整的 HTML 文档。视图标记中的输出似乎没有任何错误,所以我不确定问题发生在什么/哪里。
奇怪的是,一旦触发了这个条件,所有其他控制器/视图都会做同样的事情,但要等待一段时间(几分钟;我无法确定更具体的时间段) 似乎重置了任何问题,并且完整的布局和视图再次正确呈现。
这里管理我们主机的人告诉我没有 apache 日志,让主机提供商提供它们很麻烦,所以我有点卡在那里。鉴于故障似乎发生在 Cake 本身,我什至不确定从哪里开始进行故障排除。
有没有其他人遇到过这个?有人对在哪里进行调试有建议吗?缺少错误日志令人沮丧,但这就是我所处的情况。
coldfusion - 在 ColdFusion 中创建结构的可能竞争条件
我一直在我一直在研究的几个系统中看到间歇性错误,当使用相同的方法(不是相同的代码)时,我相信问题可能与在同一个请求中创建和使用结构有关。我想知道是否有可能存在竞争条件?
场景是这样的:我们在一个电子商务系统上,查看一个产品,或者在某些情况下是一个产品列表。有问题的代码旨在返回与每个产品相关联的图像,在我们可以用于显示所述图像的结构中。
在请求开始时,代码会查找与相关项目关联的数据库记录。这些记录代表产品的图像。这些记录在单个CFQuery
调用中返回(或更准确地说,是对返回调用结果的函数的CFQuery
调用,形成一个包含各种信息的结构)。
然后代码循环通过提供的图像结构,并将各种信息添加到本地结构。稍后在请求中,我们使用结构中的数据来显示<img>
标签中的图像。我们还使用 JavaScript 使用的属性填充<img>
标签。data-
如果查询未正确返回任何特定图像 - 通常是因为物理文件丢失 - 我们使用通用占位符图像。这是通过将结构创建放在一个try/catch
块中来完成的。
重要的是:这有效。
然而,发生的事情是非常间歇性地,当引用我们创建的结构中的一个节点时,我们发现它不存在并且 CF 抛出一个错误 - 这可能发生在 1% 的时间并重新加载同一页面,一切将完美地工作。
我在多个系统、多个服务器、不同版本的 ColdFusion(具体为 8 和 10)上遇到了同样的问题,并且使用完全不同的代码来实现类似的结果。我看到这个问题的第一个系统,实际上是用来FileExists
检查图像文件是否可用,因此我认为这个问题可能是由文件系统的瓶颈引起的——我尝试了很多方法,最终在新版本中完全消除了它系统 - 但问题仍然存在。
我唯一能想到的是,当创建一个结构然后在同一个请求中稍后使用该结构时,可能会发生竞争条件;我在结构完成创建之前引用了结构中的一个节点。不过,我在这里没有使用线程,所以我真的看不出这是怎么可能的……我没有其他想法。
下面的一些代码显示了我在做什么,但鉴于相同的问题出现在完全不同的系统上,我认为是方法而不是代码有问题。
当引用在前面的代码中创建的节点时,该错误发生在<img>
标记中 - 类似于:
元素 ImageURL_image_02_Large 在类型为coldfusion.runtime.LocalScope 的Java 对象中未定义。
但只是偶尔……我会重新加载,每次都能完美运行。
所以......抱歉问题的史诗长度,但有人能看到这是怎么发生的吗?