草庐IT

php - 连接中断的可能原因,LAMP堆栈

coder 2023-10-26 原文

MySQL 5.1.73 Apache /2.2.15 PHP 5.6.13 CentOS 6.5 版 Cakephp 3.1

大约 4 分钟(3 分 57 秒)后,我正在运行的导入过程停止。我能找到的任何日志中都没有错误或警告。导入过程包括大量 SQL 调用和数据处理,没有什么太疯狂的,但如果它对更新进行全面比较,可能需要大约 10 分钟才能完成 5500 条记录。

Firefox:安全连接失败 - 页面加载时与服务器的连接被重置。 Chrome:ERR_NO RESPONSE

  1. php 设置时间限制设置为 900,这是有效的。我可以将它设置为 5 秒并得到一个错误。未达到限制。
  2. 我可以让另一个 Controller 休眠 10 分钟,但这个错误并没有发生,这表明实际程序中的某些东西导致它失败,而不是托管服务杀死请求,因为它花费的时间太长(阅读 VPS 做这是为了防止垃圾邮件)。
  3. php 错误在 php.ini 中一直出现,只是为了确定,在 Controller 本身中。
  4. 如果我减小正在导入的文件的大小,则导入过程完成。如果它足够长,它将完成并显示浏览器消息。这向我表明它不会每次都在同一执行点失败。
  5. 我已删除所有缓存并重新启动服务器。
  6. 我在 apache 日志中没有看到任何输出,除了发出了请求。
  7. 我在 mysql 日志中没有看到任何错误,但是,我不知道是不是因为它没有打开。
  8. 完全相同的代码在我的本地主机上运行没有任何问题。它不是服务器的完美匹配,但很接近。 Ubuntu 桌面与 Centos,php 5.5 与 php 5.6
  9. 我一直在关注内存使用情况,没有发现任何问题。

此时,我正在寻找关于其他要查看的内容的任何好的建议,或者寻找可能导致失败的原因的见解。有很多可能的地方需要查看,如果没有错误,确实很难缩小问题的范围。在此先感谢您的任何建议!

更新

在仔细查看请求期间的内存使用情况后,我注意到它比理想情况下高得多。

httpd (apache) 进程被终止并产生一个新线程。一旦新线程内存不足,错误就会显示在屏幕上。之前我看的时候只有30%,可能是因为它刚刚杀死了旧进程。全程观察它,我看到它高达 80%,这对于其他进程来说足以让它耗尽内存,并且被终止的进程无法记录任何内容,因此没有错误或警告。对我来说有趣的是,这个过程刚刚开始备份。

我找到了一个命令来显示哪些进程因内存而被杀死,这被证明非常有用:

dmesg | egrep -i '终止进程'

最佳答案

我在 debugkit 上确实遇到过类似的问题。 在内存高峰期间我的代码中有错误,并且上下文被写入错误“日志”中的 html。

关于php - 连接中断的可能原因,LAMP堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33673688/

有关php - 连接中断的可能原因,LAMP堆栈的更多相关文章

  1. ruby - 如何以所有可能的方式将字符串拆分为长度最多为 3 的连续子字符串? - 2

    我试图获取一个长度在1到10之间的字符串,并输出将字符串分解为大小为1、2或3的连续子字符串的所有可能方式。例如:输入:123456将整数分割成单个字符,然后继续查找组合。该代码将返回以下所有数组。[1,2,3,4,5,6][12,3,4,5,6][1,23,4,5,6][1,2,34,5,6][1,2,3,45,6][1,2,3,4,56][12,34,5,6][12,3,45,6][12,3,4,56][1,23,45,6][1,2,34,56][1,23,4,56][12,34,56][123,4,5,6][1,234,5,6][1,2,345,6][1,2,3,456][123

  2. ruby - 续集在添加关联时访问many_to_many连接表 - 2

    我正在使用Sequel构建一个愿望list系统。我有一个wishlists和itemstable和一个items_wishlists连接表(该名称是续集选择的名称)。items_wishlists表还有一个用于facebookid的额外列(因此我可以存储opengraph操作),这是一个NOTNULL列。我还有Wishlist和Item具有续集many_to_many关联的模型已建立。Wishlist类也有:selectmany_to_many关联的选项设置为select:[:items.*,:items_wishlists__facebook_action_id].有没有一种方法可以

  3. ruby - 无法在 60 秒内获得稳定的 Firefox 连接 (127.0.0.1 :7055) - 2

    我使用的是Firefox版本36.0.1和Selenium-Webdrivergem版本2.45.0。我能够创建Firefox实例,但无法使用脚本继续进行进一步的操作无法在60秒内获得稳定的Firefox连接(127.0.0.1:7055)错误。有人能帮帮我吗? 最佳答案 我遇到了同样的问题。降级到firefoxv33后一切正常。您可以找到旧版本here 关于ruby-无法在60秒内获得稳定的Firefox连接(127.0.0.1:7055),我们在StackOverflow上找到一个类

  4. ruby - ruby 乘法语句中星号中断语法前的空格 - 2

    在添加一些空格以使代码更具可读性时(与上面的代码对齐),我遇到了这个:classCdefx42endendm=C.new现在这将给出“错误数量的参数”:m.x*m.x这将给出“语法错误,意外的tSTAR,期待$end”:2/m.x*m.x这里的解析器到底发生了什么?我使用Ruby1.9.2和2.1.5进行了测试。 最佳答案 *用于运算符(42*42)和参数解包(myfun*[42,42])。当你这样做时:m.x*m.x2/m.x*m.xRuby将此解释为参数解包,而不是*运算符(即乘法)。如果您不熟悉它,参数解包(有时也称为“spl

  5. ruby - 我的 Ruby IRC 机器人没有连接到 IRC 服务器。我究竟做错了什么? - 2

    require"socket"server="irc.rizon.net"port="6667"nick="RubyIRCBot"channel="#0x40"s=TCPSocket.open(server,port)s.print("USERTesting",0)s.print("NICK#{nick}",0)s.print("JOIN#{channel}",0)这个IRC机器人没有连接到IRC服务器,我做错了什么? 最佳答案 失败并显示此消息::irc.shakeababy.net461*USER:Notenoughparame

  6. ruby - 在 ASP 页面上 Mechanize 中断 - 2

    require'mechanize'agent=Mechanize.newlogin=agent.get('http://www.schoolnet.ch/DE/HomeDE.htm')agent.clicklogin.link_withtext:/Login/然后我得到Mechanize::UnsupportedSchemeError。 最佳答案 Mechanize不支持javascript但您可以将搜索字段添加到表单并为其分配搜索词并使用mechanize提交表单form=page.forms.firstform.add_fie

  7. ruby-on-rails - 连接字符串时如何在 <%=%> block 内输出 html_safe? - 2

    考虑一下:现在这些情况:#output:http://domain.com/?foo=1&bar=2#output:http://domain.com/?foo=1&bar=2#output:http://domain.com/?foo=1&bar=2#output:http://domain.com/?foo=1&bar=2我需要用其他字符串输出URL。我如何保证&符号不会被转义?由于我无法控制的原因,我无法发送&。求助!把我的头发拉到这里:\编辑:为了澄清,我实际上有一个像这样的数组:@images=[{:id=>"fooid",:url=>"http://

  8. ruby - 可以正常中断的来自 Rake 的长时间运行的 shell 命令? - 2

    在几个项目中,我希望有一个类似rakeserver的rake任务,它将通过任何需要的方式开始为该应用程序提供服务。这是一个示例:task:serverdo%x{bundleexecrackup-p1234}end这行得通,但是当我准备停止它时,按Ctrl+c并没有正常关闭;它中断了Rake任务本身,它说rakeaborted!并给出堆栈跟踪。在某些情况下,我必须执行Ctrl+c两次。我可能可以用Signal.trap写一些东西来更优雅地中断它。有没有更简单的方法? 最佳答案 trap('SIGINT'){puts"Yourmessa

  9. ruby - Faye WebSocket,关闭处理程序被触发后重新连接到套接字 - 2

    我有一个super简单的脚本,它几乎包含了FayeWebSocketGitHub页面上用于处理关闭连接的内容:ws=Faye::WebSocket::Client.new(url,nil,:headers=>headers)ws.on:opendo|event|p[:open]#sendpingcommand#sendtestcommand#ws.send({command:'test'}.to_json)endws.on:messagedo|event|#hereistheentrypointfordatacomingfromtheserver.pJSON.parse(event.d

  10. ruby-on-rails - prawnto 显示新页面时不会中断的表格 - 2

    我有可变数量的表格和可变数量的行,我想让它们一个接一个地显示,但如果表格不适合当前页面,请将其放在下一页,然后继续。我已将表格放入事务中,以便我可以回滚然后打印它(如果高度适合当前页面),但我如何获得表格高度?我现在有这段代码pdf.transactiondopdf.table@data,:font_size=>12,:border_style=>:grid,:horizontal_padding=>10,:vertical_padding=>3,:border_width=>2,:position=>:left,:row_colors=>["FFFFFF","DDDDDD"]pdf.

随机推荐