`
langzhe
  • 浏览: 286307 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

gen_server瓶颈

 
阅读更多

如果只维护了一个gen_server进程来处理大多数请求将造成。进程忙不过来,消息队列不大断增大,需要消耗更多的堆内存。最后会导致VIM崩溃。

方法1: 此方法有个缺点 spawn 创建+销毁成本非常高.

我采用gen_server作为第三方服务放入到系统中,为了解决瓶颈问题
我在handle_call里面采用noreply,且只创建一个进程Pid,然后给此进程Pid发消息,剩下的业务逻辑交给Pid进进程处理.计算完进程自动销毁(receive没有循环)
31 handle_call({testnoreply}, From, Tab) ->

32 Pid = spawn(?MODULE, test_reply,[]),
33 Pid ! {From,test},
34 {noreply, Tab};
业务逻辑放在test_reply处理
22 test_reply()->
23 receive
24 {From, X} ->
25 io:format(“X===~p,=From=~p==~n”,[X,From]),
26 gen_server:reply(From,test)
27 end.

方法2:创建更多的gen_server PID处理 提高消费队列,如果个进程状态共享的话有点繁琐。

方法3:用一个单独的node来处理,同方法2类似

方法4:采用redis消息队列--所以对于大量的消息处理的系统,首先要考虑的就是架构一个消息队列集群

在此谢谢 yufeng\ licuangang\zhaoweiguo

相关资料

http://blog.yufeng.info/archives/1438

0
4
分享到:
评论

相关推荐

    HP ProLiant DL388p Gen8显卡驱动_SERVER2008

    对于Windows Server 2008 R2这样的操作系统,正确的驱动可以确保系统稳定运行,避免出现兼容性问题或性能瓶颈。 在描述中提到的“SERVER 2008 R2 版 64位系统”,这是微软的Windows Server 2008的第六个服务包,即...

    基于erlang的文件存储

    5. **并发处理**:Erlang的进程模型使得并发处理变得简单且高效,每个gen_server实例可以独立处理文件请求,避免了单点性能瓶颈。在高负载情况下,这种设计可以确保系统的稳定性和响应速度。 6. **分布式特性**:...

    WebLogic_Server_Performance_and_Tuning

    - **案例二**:一家金融企业在进行大规模交易处理时遇到性能瓶颈,通过引入分布式缓存技术优化数据访问模式,并结合负载均衡技术实现了性能大幅提升。 #### 八、总结 - 通过对WebLogic Server进行全面深入地性能...

    Erlang-OTP-API 离线查询英文全手册

    5. **行为模式(Behaviours)**:如`gen_server`、`gen_event`和`supervisor`等,这些是Erlang OTP设计模式的实现,它们为特定的系统角色提供了基础架构。例如,`gen_server`适用于处理服务请求,`gen_event`用于...

    hp micro server gen8 存储卡驱动

    在IT行业中,服务器硬件的兼容性和驱动程序的正确配置至关重要,特别是对于小型企业级服务器如HP Micro Server Gen8。此话题主要围绕“HP Micro Server Gen8 存储卡驱动”在ESXi虚拟化环境下的应用,特别是针对ESXi ...

    poolgirl

    poolgirl-一个性感的Erlang工人... 答:Poolboy的工作程序管理器是一个gen_server进程,在拥有大量工作程序的池中,管理器本身可能成为瓶颈,一种可能的解决方案是让多个管理器并使这些负载均衡。 在用例场景中,池工

    SystemTap动态跟踪数据库性能.pptx

    probe process("/path/to/mysql_server").function("buf_page_get_gen") { tm = gettimeofday_us() } probe process("/path/to/mysql_server").function("buf_page_release_latch").return { printf("Time:%d\n", ...

    编写分布式的Erlang程序_陷阱和对策(中文版)

    Erlang提供了`monitor`、`link`和`gen_server`行为等机制来帮助管理同步和异常。 9. ** OTP设计原则**:OTP(Open Telecom Platform)是Erlang的框架,包含了一系列设计模式和库。理解并遵循OTP的设计原则,如行为...

    loadgen 2007

    3. **配置调整**:通过LoadGen 2007的压力测试,可以识别出性能瓶颈,如数据库查询效率低、硬件资源限制等,从而针对性地调整BizTalk Server的配置,例如增加硬件资源、优化数据库索引或调整BizTalk Server的配置...

    tomcat_OutOfMemoreError处理方法

    在IT领域,特别是Java应用服务器环境,如Apache Tomcat中,遇到`java.lang.OutOfMemoryError`异常是常见的性能瓶颈之一。此错误通常表明应用程序所消耗的内存超过了JVM(Java虚拟机)分配的限制。根据给定的文件信息...

    weblogic_linux

    - **内存调优**:根据实际应用场景调整Heap Size、PermGen Space等内存参数,提高WebLogic Server的处理能力。 - **线程池配置**:合理配置线程池大小,避免因线程阻塞导致的服务响应延迟。 - **缓存策略**:利用...

    Erlang中的OTP简介

    例如,gen_server是一个通用服务器的行为,它封装了服务器端的基本行为,比如启动、停止、接收消息、处理请求等。而gen_event提供了事件管理的行为,可以用来处理应用程序中产生的各种事件。 在OTP中,容错是通过...

    jvisualvm使用方法

    在软件开发过程中,经常会遇到各种性能瓶颈,其中最为常见的莫过于内存溢出问题。本文将针对`OutOfMemoryError: PermGen space`这一特定类型的内存溢出错误进行探讨,并通过使用jvisualvm工具来监控内存使用情况、...

    梁式仪表盘:BEAM Prometheus Grafana

    8. **Erlang/Elixir监控最佳实践**: 使用梁式仪表盘可以遵循Erlang和Elixir社区的监控最佳实践,例如监控每个节点的进程数量、ETS表的使用情况、gen_server的调用统计等,确保系统的稳定运行。 综上所述,"beam-...

    JAVA性能测试与调优案例

    对于内存使用,建议进行内存泄漏检测和JVM内存泄漏分析,了解JVM内存结构和性能瓶颈,分析PermGen、Heap溢出等问题。而在连接线程数调整方面,需要关注与连接相关的参数,如connectionTimeout、acceptCount以及...

    weblogic内存配置

    3. **升级到最新JDK版本**:考虑到旧版本JDK可能存在性能瓶颈或安全问题,建议升级到最新的JDK版本,并相应地调整内存配置参数。 4. **考虑使用Metaspace而非PermGen Space**:对于使用JDK 8及更高版本的情况,应...

    Linux平台上的WAS垃圾回收策略分析.pdf

    IBM WebSphere Application Server (WAS) 是一个流行的Java应用程序服务器,广泛用于企业级的Java Enterprise Edition (Java EE) 应用部署。在Linux平台上,WAS使用Java虚拟机(JVM)来运行Java代码。垃圾回收...

    elearning性能测试总结报告

    最终,项目组认识到,性能瓶颈的定位不仅依赖于丰富的知识积累,还需要模块化思维和跨领域的协作,尤其是与DBA的紧密配合,对于排查数据库瓶颈尤为关键。 ### 执行中的问题与解决方案 - **问题1**:VUgen执行脚本...

Global site tag (gtag.js) - Google Analytics