- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
问题描述 - Apache 日志
我在 Apache 日志文件中发现了与此类似的项目:
166.147.68.243 [24/Feb/2013:06:06:25 -0500] 19 web-site.com "-" 408 - "-"
我有自定义日志格式,这里的 408
代表状态。日志格式为:
LogFormat "%h %t %D %V \"%r\" %>s %b \"%{User-agent}i\"" detailed
通常日志文件中的行看起来像
184.73.232.108 [26/Feb/2013:08:38:16 -0500] 30677 www.site.com "GET /api/search... HTTP/1.1" 200 205 "Zend_Http_Client"
这就是为什么 408 错误行对我来说看起来很奇怪。没有记录任何请求,我不知道应该优化什么。
问题
如何解决这个问题?我应该收集哪些额外的信息或日志?什么可能导致问题?这是服务器上有问题吗?或者这绝对是网络连接问题?
我正在解决这个问题,因为我们的客户提示他的手机出现 408 错误。我在日志文件中发现了很多记录,但我不得不承认我不知道如何处理这些记录。
我自己的研究
这里已经有几个关于这个主题的问题。但是人们要具体得多。就像他们讨论某些特定客户端软件和脚本的问题一样。在这里,我刚刚在 iPhone 上打开某个页面时遇到错误。
例如 HTTP, 408 Request timeout ,建议在POST之前做GET请求。如果我有自定义客户端,我可以这样做。但是我无法控制用户浏览器的行为。
猜测 #1
在网上搜索和思考这个问题时,我发现了https://serverfault.com/questions/383290/too-many-408-error-codes-in-access-log
建议更新Timeout
配置参数恢复到默认值。
#
# Timeout: The number of seconds before receives and sends time out.
#
Timeout 300
我首先尝试了值 30,因为我认为 30 秒应该足够了。 但即使使用 300 秒的默认值,我仍然会在日志中收到错误。我在编写此文本时执行了 tail -f
并得到了超过 10 行几分钟。
对我来说,这看起来不是一个完整的解决方案。
最佳答案
经过对这个主题的一些研究,我得出了以下答案。它由我们的首席开发人员提供,我认为它很好地解释了这个主题。
这些错误是完全正常的。它们不是更大问题的迹象,而是正常连接使 Apache 打开的时间超过允许的时间。
例如,客户端的查询一遍又一遍地运行它们使 Apache 保持打开状态。 Apache 的回应是适本地关闭了他。
如果没有,那么少数人就可以接管我们的服务器并且不允许其他任何人连接。
大多数情况下,这些错误来自寻找漏洞利用的系统,您可以通过打开 telnet session 并将其保持打开状态来重新创建它。
同时,tail -f 访问日志,在 X 时间(KeepAliveTimeout)内,您将看到您的 IP 弹出窗口,其中包含相同的错误代码。
在 Apache 1.3 时代,这个错误很常见,但后来 2.2 出来了,他们把它删除了,直到我们中有足够多的人要求归还它,因为它让我们知道有多少人持有开放的态度端口,而不是请求实际资源等。
除了确保将超时设置为我在原始问题中描述的某个合理值外,我认为这里不应该做任何其他事情。
关于php - 使用 PHP 了解 Apache 上的 “408 Request Timeout”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15090897/
我正在使用 heroku 来托管支持 iOS 应用程序的 ruby on rails 应用程序。我有一个可能会运行很长时间的请求,我需要能够在我的请求被终止之前捕获超时。我正在使用 Timeout
我在 https://stackoverflow.com/questions/517219?tab=oldest#tab-top 找到了我认为应该完美运行的东西但是,它对我不起作用。 我在 Windo
我有这段代码: begin complete_results = Timeout.timeout(4) do results = platform.search(artist,
我正在开发一个音乐训练游戏,我使用 Unity 3D 来创建它。 它会发出随机音符。 问题是,我的 android 设备只有五个“屏幕熄灭前的时间”选项,其中最长的是 10 分钟。 所以 10 分钟后
我运行以下代码来捕获任何可能挂起的 SQL 语句。在尝试对此进行测试时,我编写了一个非常优化的 sql 语句,它需要一分钟的时间才能运行。我在 activerecord execute sql 语句周
由于 Faraday 没有文档,我无法在任何地方找到它。法拉第什么是“timeout”,什么是“open timeout”? 最佳答案 如果您在 https://github.com/lostisla
我想对 Angular.js $timeout 进行单元测试,以检查是否已使用正确的持续时间/延迟值调用它。 断言看起来像这样: expect($timeout).toHaveBeenCalledWi
我正在循环一个列表并对列表中的每个成员执行一些操作。如果某个成员花费了太多时间(在本例中为 1 秒),我打算跳过它。但是,try 语句内的 block 始终处于处理状态,并且永远不会超时。我不明白为什
我有一个程序可以打印出通过或失败。我想检测卡在那里的程序并回显“超时” 我写了这样一个脚本: #!/bin/bash echo -n 'test' && timeout 5 ./mytest | gr
我有一个 Sinatra 应用程序。我正在使用 Rack::Test 对其进行测试。我想确保将查询字符串参数传递给 Timeout::timeout()。 我认为 expect_any_instanc
相同的脚本不同的错误。这可能更多地与我的网络有关,而不是我的代码。脚本如下: #!/usr/bin/env ruby -rubygems require File.join(File.dirname(
我需要测试一个从 url 加载图像的 AngularJs 服务。这是我的服务: /*global angular, Image*/ (function () { 'use strict'; f
随着数据库大小的增加,我有一个查询需要更长的时间来执行。查询已优化并且是必要的,但我的 C# 控制台应用程序最近给我这个错误: Unhandled Exception: MySql.Data.MySq
我正在研究 Linux shell 中的 timeout 命令。 当我尝试 timeout 1 bash 时,bash 将运行并在 1 秒后终止。 当我尝试 timeout 2 timeout 1 y
随着数据库大小的增加,我有一个查询需要更长的时间来执行。查询已优化并且是必要的,但我的 C# 控制台应用程序最近给我这个错误: Unhandled Exception: MySql.Data.MySq
我希望使用 Spring boot 和 Tomcat 扩展 Spring MVC 应用程序中的用户 session 。查看文档似乎有 2 个相关 properties : server.servlet
我正在尝试升级 Puppet 以使用 Ruby 1.9,但遇到了常量问题。 const_defined?("Timeout") 返回真,即使 :Timeout 不在常量列表中。这不会发生在 Ruby
首先,这是一个几乎重复的: How to differentiate when wait(long timeout) exit for notify or timeout? 但这是一个新的后续问题。
对于下面的代码,notifyAll() 会一直持有锁直到完成,即使超时了,这个 block 也不持有锁,必须等待notifyAll() block 完成。那么wait(timeout)中的timeou
Thread.Sleep(timeout) 和resetEvent.Wait(timeout) 都会导致执行暂停至少timeout 毫秒,那么它们之间有区别吗?我知道 Thread.Sleep 导致线
我是一名优秀的程序员,十分优秀!