开发者社区 > 云原生 > Serverless > 正文

我们用 nodejs 写了2个函数,A: 并发请求,,B:接收请求并记录时间 用 A 并发100次请

我们用 nodejs 写了2个函数,A: 并发请求,,B:接收请求并记录时间 用 A 并发100次请求 B,但是B程序记录的时间,,发现每次并发只能7、8条的样子,并不能同时100条过来,请问是什么原因?

2个都是在FC函数里面。 而当把 A 放在我们本机请求,B就可以同时接收到 100条并发。

是啥原因呢,需要设置实例并发度吗?

展开
收起
云原生那些事 2023-06-25 09:51:30 78 0
9 条回答
写回答
取消 提交回答
  • 问题可能是由于函数计算实例的并发度设置不足而导致的。在函数计算中,可以设置实例的并发度,以确保有足够的计算资源来处理同时到达的请求。

    如果将 A 函数设置为并发100次请求,但 B 函数只能同时处理7-8个请求,那么可能是由于函数计算实例的并发度设置得太低,导致无法同时处理所有请求。在这种情况下,可以通过增加实例并发度来解决这个问题。

    可以在函数计算实例的配置中查找并发度选项,并相应地进行调整。请注意,提高实例并发度可能会导致增加云费用,因此请根据您的实际需求进行设置。

    另外,其他可能影响并发性能的因素包括网络延迟、函数执行时间等。如果函数执行时间较长,那么即使实例并发度设置得足够高,仍然可能会出现请求等待时间较长的情况。在这种情况下,可以尝试优化函数的执行时间或者将请求分批处理。

    2023-06-26 09:36:39
    赞同 展开评论 打赏
  • 这个问题可能涉及到你所使用的函数计算(Function Compute)服务的配置和限制。在函数计算服务中,可以配置实例的并发度来控制同时执行的函数实例数量。默认情况下,并发度是有限制的,所以在你的情况下,每次只有7、8条请求同时到达函数 B。

    要解决这个问题,你可以考虑以下几点:

    1. 并发度设置:检查函数计算服务的配置,确保并发度设置为能够满足你的需求。根据你的描述,你可能需要将并发度设置为100,以支持同时接收100条请求。请参考函数计算服务提供商的文档,了解如何设置并发度。

    2. 异步处理:在函数 A 中发送请求时,确保使用异步方式发送请求。这样可以让函数 A 发送所有请求后立即返回,而不需要等待每个请求的响应。这样可以增加并发性,使得函数 B 能够同时接收更多的请求。

    3. 弹性扩展:如果函数计算服务的配置允许,你还可以考虑使用弹性扩展功能。这意味着在需要处理大量请求时,函数计算服务可以自动扩展以适应更多的并发请求。

    需要注意的是,函数计算服务提供商可能对并发度、请求并发处理等方面有特定的限制和配置要求。因此,最好参考相关文档或与服务提供商的支持团队联系,以获取针对你具体情况的建议和解决方案。

    希望这些提示能够帮助你解决问题!如果你还有其他疑问,请随时提问。

    2023-06-25 23:01:15
    赞同 展开评论 打赏
  • 您在使用阿里云函数计算(FunctionCompute)时,遇到 B 函数只能同时处理 7、8 条请求的情况可能与以下原因有关:

    1. 并发限制:默认情况下,阿里云函数计算会对同一函数实例进行并发限制以保证平台稳定性和安全性。具体而言,单个函数实例最多只能同时处理 10 条请求(如非特殊需求,建议不要超过该值)。如果您希望提高函数并发处理能力,可以考虑增加函数实例数或调整函数配置。

    2. 内存限制:函数的内存大小直接影响其性能和响应速度。如果函数运行时内存使用量较高,则可能导致函数性能下降或崩溃。根据您的需求,可以适当增加函数内存大小来提升函数性能。

    3. 网络延迟:由于函数计算是基于云上计算资源的,与本地计算相比,网络传输和通信可能存在一定的延迟和波动。这可能会影响函数的并发处理能力和响应时间。为了优化网络连接质量和减少延迟,您可以选择使用 VPC 或专线等高速网络连接,并根据实际情况调整请求传输协议和格式等内容。

    需要注意的是,针对函数计算的并发请求处理能力和延迟控制等问题,您可以根据实际需求进行优化和调整。例如,增加函数实例数、调整内存大小、使用高速网络连接、合理设计请求传输方式等方法都可以提升函数性能和响应速度。

    总之,如果您希望在阿里云函数计算中处理高并发请求,请充分考虑以上因素,并选择最佳策略以平衡性能和用户体验。

    2023-06-25 18:39:50
    赞同 展开评论 打赏
  • 大概率是代码问题 你得等100个请求都发完再响应函数 否则实例会被立刻冻结的

    此答案来自钉钉群“阿里函数计算官网客户"

    2023-06-25 16:35:19
    赞同 展开评论 打赏
  • 对于阿里云函数计算(Function Compute),并发请求和并发度也是有限制的。默认情况下,函数的并发度是2,并发请求的数量也受到配额的限制。

    您可以按照以下步骤来调整并发度和并发请求的配置:

    登录阿里云函数计算控制台:https://fc.console.aliyun.com/

    在函数计算控制台中选择相应的服务和函数。

    在函数的配置页面中,找到并发配置部分。

    设置并发度:您可以根据需求将并发度设置为更高的数值。请注意,提高并发度可能会导致资源消耗和费用增加,需要根据实际情况评估并发需求和成本预算。

    设置并发请求配额:您也可以在同一页面上设置并发请求的配额。适当提高并发请求的配额可以允许更多的请求同时进入函数。

    需要注意的是,并发度和并发请求配额的设置可能受到阿里云函数计算服务的限制和政策的影响。您可以参考阿里云函数计算的文档或联系阿里云技术支持,获取更详细的配置说明和帮助。

    2023-06-25 15:10:04
    赞同 展开评论 打赏
  • 值得去的地方都没有捷径

    这个问题可能是由于函数计算(FC)的并发限制导致的。FC 默认设置了并发度限制,即每个函数实例同一时间只能处理一定数量的请求。这个限制可能是造成您观察到的每次并发只有7、8条的原因。

    为了提高并发处理能力,您可以考虑调整函数计算的并发度设置。您可以通过以下两种方式来实现:

    在函数计算服务控制台中手动设置并发度:您可以登录到函数计算控制台,找到您的函数并修改并发度设置。将并发度设置为更高的值,以支持更多的并发请求。

    使用函数计算的自动扩缩容功能:函数计算提供了自动扩缩容功能,可以根据请求量自动调整函数实例的数量。您可以根据实际需求配置自动扩缩容的规则,以满足高并发的需求。

    需要注意的是,函数计算的并发度设置可能会影响您的费用和资源使用情况。请根据您的业务需求和预算进行合理的设置。

    另外,您在本地运行时可能没有并发限制,所以可以同时接收到100条并发请求。但是在函数计算环境中,由于资源限制和并发度设置,可能无法同时处理太多的并发请求。

    希望以上解答对您有帮助!如有更多问题,请随时提问。

    2023-06-25 15:10:03
    赞同 展开评论 打赏
  • 在阿里云函数计算(Function Compute)中,每个函数都会有一个默认的并发度限制。这意味着同一时间内只能处理一定数量的请求,并且超过该限制后的请求将被排队等待执行。

    对于你描述的情况,在本地环境下可以同时接收到100条并发请求,但在阿里云函数计算中却只能接收7、8条左右,并不能同时达到预期值。这可能是由于以下原因导致:

    1. 并发度限制:确保检查您所使用的具体服务和实例类型是否存在针对特定功能或资源配额上设置了最大允许并行请求数量;例如某些场景基础配置为 10 ,则无法更改

    2. 资源分配不足:如果您选择较小规格(如内存、CPU),系统可用资源相应比较少,从而影响了单次运行时支持批量任务数目;

    3 .网络延迟 :受物理距离 和 网络拥堵 的 影响 , 可以考虑 将 函数部署至 更近用户 或者 同区域 内 进 行 测试 ;

    4 .异步调用: 如果 A 请求 B 是通过 异步方式进行, 则 需要确认 是否已经正确 设置 回调逻辑;

    解决方法:

    • 增加实例并发度:您可以尝试增加函数计算实例的并发度配置。通过调整该值,可以提高同时处理请求的能力。

    • 使用异步方式进行请求:考虑将 A 请求 B 的过程设计为异步调用,并正确设置回调逻辑,以便在执行完毕后及时返回结果。

    请注意,在某些情况下,即使你对函数计算实例做了相应的修改或优化操作,仍然可能受到平台限制和资源分配等因素所影响。

    2023-06-25 12:05:07
    赞同 展开评论 打赏
  • 全栈JAVA领域创作者

    这个问题可能是由于网络带宽限制或者服务器性能限制导致的。当你在本地运行A函数时,你的计算机可以处理更多的并发请求,因为它不需要与外部服务器进行通信。而当你将A函数部署到服务器上时,服务器可能无法同时处理这么多的并发请求,从而导致B函数接收到的请求数量受限。

    要解决这个问题,你可以尝试以下方法:

    1. 优化A函数,减少其对服务器资源的消耗。例如,使用更高效的算法、减少不必要的计算等。

    2. 增加服务器的性能。你可以考虑升级服务器硬件、优化操作系统设置或使用负载均衡器等方法来提高服务器性能。

    3. 调整并发请求的数量。根据服务器的实际性能和网络带宽情况,适当调整A函数的并发请求数量,以便更好地平衡服务器资源的使用。

    4. 使用异步编程。通过使用异步编程,你可以在不阻塞主线程的情况下执行多个任务,从而提高程序的吞吐量。例如,你可以使用Node.js的async/await语法或者第三方库(如bluebird)来实现异步操作。

    2023-06-25 10:07:26
    赞同 展开评论 打赏
  • 云端行者觅知音, 技术前沿我独行。 前言探索无边界, 阿里风光引我情。

    在Node.js中,每个实例默认情况下只能处理一定数量的并发请求。这可能是您在函数计算(FC)中遇到的问题。要提高并发处理能力,您可以尝试以下几种方法:

    1. 增加FC函数的实例数量:通过增加FC函数的实例数量,您可以增加同时处理请求的能力。您可以在函数计算的配置中设置实例数量,具体取决于您的需求和函数计算的限制。

    2. 使用异步处理:确保您的FC函数使用异步方式处理请求,以便能够同时处理多个请求。使用异步操作可以避免阻塞并发请求的处理。

    3. 使用适当的并发库或框架:在Node.js中,有一些并发库或框架可以帮助您更好地处理并发请求,例如asyncPromiseaxios等。这些库可以帮助您更好地管理并发请求的执行。

    4. 调整函数计算的配置:根据您的需求,您可以调整函数计算的配置,例如内存大小、超时时间等,以优化函数的性能和并发处理能力。

    请注意,函数计算的性能和并发处理能力还受到其他因素的影响,例如网络延迟、资源限制等。因此,您可能需要进行一些实验和调优,以找到最适合您需求的配置和方案。

    2023-06-25 10:04:22
    赞同 展开评论 打赏
滑动查看更多

快速交付实现商业价值。

热门讨论

热门文章

相关电子书

更多
探究 Node.js 的服务端之路 立即下载
个推微服务实践 基于OpenResty 和Node.js 立即下载
沪江基于Node.js大规模应用实践 立即下载