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

Serverless 应用引擎有个问题,有没有一个比较好的测算标准?

Serverless 应用引擎有个问题,就是我们这个内存空间能不能显示得正常一点,在监控查看内存使用量都还挺正常,实际已经满了,一直在用swap空间,有没有一个比较好的测算标准,我需要给实例预留出多少内存空间才能让你们的服务正常跑?

展开
收起
真的很搞笑 2024-01-28 18:50:29 46 0
2 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    对于Serverless应用引擎的内存空间问题,确保足够的预留内存是非常重要的。以下是一些建议来帮助您计算所需的内存空间:

    1. 了解您的应用程序需求:首先,您需要了解您的应用程序在正常运行时所需的内存量。这可以通过对应用程序进行性能测试和分析来确定。

    2. 考虑峰值负载:除了平均内存使用量外,还需要考虑应用程序在峰值负载下的内存需求。这将确保在高并发情况下,您的应用程序仍然能够正常运行。

    3. 考虑其他因素:除了应用程序本身的内存需求外,还需要考虑其他因素,如操作系统、运行时环境和其他依赖项的内存占用。

    4. 留出一定的缓冲区:为了避免因内存不足而导致的性能下降或崩溃,建议您在计算所需内存时留出一定的缓冲区。通常,将实际内存需求的10-20%作为缓冲区是一个合理的范围。

    综合以上因素,您可以得出一个大致的内存需求估计。然后,根据这个估计值为您的实例预留足够的内存空间,以确保服务正常运行。同时,定期监控内存使用情况并根据需要进行调整也是很重要的。

    2024-01-28 21:51:22
    赞同 1 展开评论 打赏
  • 在阿里云Serverless应用引擎(SAE)中,为了确保服务稳定运行而不频繁触发swap,你需要合理规划和监控应用的内存使用情况:

    1. 了解应用内存需求
      • 分析应用运行时的实际内存消耗,包括JVM堆内存、元空间、栈空间、Direct ByteBuffer、Native内存等。
      • 对于Java应用,可通过JMX监控JVM内存各部分的使用情况,找出内存瓶颈所在。
    1. 设置内存限制

      • 根据应用的内存需求峰值,为实例设置足够的内存上限,留出一定的余量,避免在流量高峰时因内存不足而导致频繁GC或swap。
    2. 监控和预警

      • 使用SAE提供的监控功能,定期查看实例的内存使用率和swap使用情况。
      • 设置告警阈值,当内存使用率达到一定比例时发出警告,及时扩容或优化应用。
    3. 合理分配资源

      • 根据应用的实际业务负载和增长趋势,动态调整实例规格或实例数量,确保有足够的内存资源应对业务需求。
    4. 排查内存泄漏

      • 如果发现即使预留了足够内存仍频繁触发swap,可能是由于内存泄漏或其他原因造成内存无法有效回收,此时需要深入分析和修复应用代码。
    5. 内存预留建议

      • 至少预留20%-30%的内存作为缓冲区,以应对短时的内存峰值需求。
      • 如果你的应用有明显的周期性内存使用波动,应基于历史数据来预测高峰期所需的内存,并据此设置实例规格。
    2024-01-28 21:43:58
    赞同 1 展开评论 打赏
问答标签:
问答地址:
相关产品:

快速交付实现商业价值。

相关产品

  • 函数计算
  • 相关电子书

    更多
    Hologres Serverless之路:揭秘弹性计算组 立即下载
    Serverless开发平台: 让研发效能再提升 立即下载
    Serverless 引领云上研发新范式 立即下载