AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 582225
Accepted
user193597
user193597
Asked: 2014-03-15 12:15:05 +0800 CST2014-03-15 12:15:05 +0800 CST 2014-03-15 12:15:05 +0800 CST

大文件上传的 ColdFusion 设置

  • 772

我正在尝试设置一个coldfusion服务器来接受大文件的上传,但我遇到了一些限制。这是我到目前为止观察到的:

ColdFusion Administrator 中有两个限制上传大小的设置:“发布数据的最大大小”和“请求节流内存”。如果您上传的大小(包括 HTTP 开销)大于其中任一设置,则上传会被拒绝。我不明白为什么我们需要其中两个;据我所知,无论哪个设置得更高都没有任何影响。较低的获胜。

当有人尝试上传太大的文件时,他们不会收到很好的错误消息。在发送了大约 1 个 TCP 窗口的数据后,上传就永远挂起。它以一种非常糟糕的方式挂起。即使在客户端放弃并断开连接后,关联的 apache 线程仍然被占用(我可以使用 mod_status 看到这一点)。卡住的线程只会不断增加,直到没有剩余的线程可以接受新请求并且必须重新启动服务器。

“请求节流”是我真的不明白的东西。所有关于它的文档都将它称为内存区域的大小。如果是这样,那么我看不出它与文件大小有什么关系。它暗示了一些我不想相信的事情:ColdFusion 在将整个上传的文件写入磁盘之前将其吞入内存。没有理智的人会这样做,当上传循环(读取一个中等大小的块,将其写入磁盘,重复直到完成)如此简单时。(我知道 HTTP 多部分/表单数据帖子的结构使它有点困难,但是......肯定像 Adob​​e 这样拥有网络开发产品的大公司可以做到这一点......他们不能吗?)

如果整个文件的 slurping 确实发生了,他们如何期望我们选择一个可行的大小限制?允许一个千兆字节和几个同时使用的用户甚至无需尝试即可运行您的服务器内存不足。我们要做什么,不允许千兆字节​​上传?人们有视频要发布,没有时间编辑它们!

附加信息

以下是一些版本号。

网络服务器:

Server: Apache/2.2.24 (Win64) mod_jk/1.2.32

冷融合:

Server Product           ColdFusion
Version                  ColdFusion 10,285437
Tomcat Version           7.0.23.0
Edition                  Enterprise
Operating System         Windows Server 2008 R2
OS Version               6.1
Update Level             /E:/ColdFusion10/cfusion/lib/updates/chf10000011.jar
Adobe Driver Version     4.1 (Build 0001)

附加信息 #2

我不知道您为什么想知道我在限制字段中输入了哪些值,但它们都设置为 200 MB 有一段时间了。我将“发布数据的最大大小”增加到 2000 MB,但没有效果。我已经发现如果我将“请求节流内存”增加到 2000 MB,它将允许更大的上传。我在这里寻找的不是一个快速的“在那里塞进更多的东西!” 答案,但详细解释了这些设置的实际含义以及它们对服务器内存使用的影响。

为什么服务器线程永远停止而不是在超出限制时返回错误消息可能是另一个问题。我认为这将是一个众所周知的问题。也许我应该先问其他人是否可以复制它。我从未见过从 ColdFusion 返回给客户端的“文件太大”错误消息。它应该有一个吗?

附加信息#3 一些实验使我得到了部分答案。我缺少的第一件事是“请求节流内存”(RTM)如果设置为高于“最大发布数据大小”(MSOPD),它会做一些有用的事情。在我的第一轮测试中,不知道它们之间的关系,我让它们反过来。根据我的新理解,我可以看到 RTM/MSOPD 比率是如果它们都接近最大大小,则允许同时上传的数量。

假设“请求节流内存”实际上是一个内存缓冲区,而不是一个临时文件,这意味着我最担心的事情是正确的。每个文件在上传的整个过程中都完全保存在内存中。没有人说过任何让我相信的事情(尽管我也没有看到有人跳起来说“是的,他们做了这件愚蠢的事情”)

同样有了这种新的理解,停滞的上传是有道理的。服务器没有可用的内存来接受上传,所以它只是不从套接字读取。TCP 缓冲区填满,窗口大小变为 0,客户端等待它再次打开,这应该在服务器开始读取请求时立即发生。但就我而言,出于某种原因,这永远不会发生。服务器完全忘记了请求,所以它只是徘徊。

“发布数据的最大大小”被击中的情况仍然有点神秘。达到硬限制的请求不应排队,而应被拒绝。而且我确实在server.log. 但同样在这种情况下,服务器似乎忘记了请求,而没有向客户端发送错误。

upload
  • 2 2 个回答
  • 9293 Views

2 个回答

  • Voted
  1. Anit Kumar
    2014-03-15T15:55:31+08:002014-03-15T15:55:31+08:00

    您可以使用 cftry-catch 捕获错误并向用户显示自定义消息。话虽如此,最大 POST 请求参数数量、最大发布数据大小、请求节流阈值和请求节流内存的值是多少。您使用的是 CF Std 还是 Ent,ColdFusion 的版本是什么?

    • 1
  2. Best Answer
    Anit Kumar
    2014-03-18T13:46:57+08:002014-03-18T13:46:57+08:00

    我还将尝试解释调整的设置:-

    • POST 请求参数的最大数量 - 这是指通过特定请求发送的属性/参数的最大数量。特别用于在表单上发布数据时。
    • 发布数据的最大大小- 这是可以在服务器上发布的最大数据。这是 POST 请求期间特定形式的所有数据的总和。
    • 请求限制阈值- 如果需要,ColdFusion 可以限制(强制减慢)传入请求。但是,无论油门状态如何,都可以允许非常小的请求(有效负载较小的请求)通过。要允许处理小型请求,请指定允许的最大大小(默认为最大 4 MB)。
    • 请求限制内存- 要限制请求,请指定为限制分配的最大内存量。如果没有足够的总内存可用,ColdFusion 会将请求排队,直到有足够的可用内存(默认为 200 MB)。它不会为 Req1 保留内存,因为它低于阈值。

    考虑有三个同时请求 Req1 (3 MB)、Req2 (6 MB) 和 Req3 (9 MB)。在默认设置下,Request Throttle Threshold 设置为 4MB,ColdFusion 将在 Throttle Memory 中保留 (6+9=15MB)。同样,它将继续为所有同时请求添加请求节流内存,并且限制是我们为请求节流内存设置的限制(默认为 200 MB)

    希望这可以帮助。

    • 1

相关问题

  • 最好的同步工具[关闭]

  • 下载和上传速度[关闭]

  • OPENROWSET、二进制文件、varchars 和 varbinaries

  • 说服系统管理员文件上传可以吗?

  • 我们的网络开发人员有一个需要接受文件上传的项目。我应该确保涵盖什么?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve