`
feisuzhu
  • 浏览: 14339 次
  • 性别: Icon_minigender_1
  • 来自: 济南
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Apache的prefork模式导致飞信模块多次初始化

阅读更多

RT

自己写的一个模块,封装了一下PyFetion,目的是尽量保持飞信可用,再就是方便点。

在模块初始化的时候创建线程,登录,然后不停的查询数据库看是否有信息要发送。

后来发现很不稳定,看了下log


[Sun Sep 26 19:59:36 2010] [warn] child process 12374 still did not exit, sending a SIGTERM
Error in my_thread_global_end(): 1 threads didn't exit
[Sun Sep 26 19:59:38 2010] [notice] caught SIGTERM, shutting down
[Sun Sep 26 20:02:24 2010] [notice] Apache/2.2.14 (Ubuntu) PHP/5.3.2-1ubuntu4.5 with Suhosin-Patch mod_ssl/2.2.14 OpenSSL/0.9.8k mod_wsgi/2.8 Python/2.6.5 configured -- resuming normal operations
[Sun Sep 26 20:02:46 2010] [error] <SupervisorThread(SupervisorThread, started 140184746718992)> ('construct...',)
[Sun Sep 26 20:02:49 2010] [error] <SupervisorThread(SupervisorThread, started 140184746718992)> ('login...',)
[Sun Sep 26 20:02:54 2010] [error] <MessageThread(MessageThread, started 140184645531408)> ('message round',)
......
[Sun Sep 26 20:02:59 2010] [error] <SendSMSThread(SendSMSThread, started 140184637138704)> ('nomsg',)
[Sun Sep 26 20:03:04 2010] [error] <SendSMSThread(SendSMSThread, started 140184637138704)> ('nomsg',)
.......
[Sun Sep 26 20:03:24 2010] [error] <SupervisorThread(SupervisorThread, started 140184746718992)> ('construct...',)
[Sun Sep 26 20:03:24 2010] [error] <HeartbeatThread(HeartbeatThread, started 140184721078032)> ('beat~',)
[Sun Sep 26 20:03:24 2010] [error] <SendSMSThread(SendSMSThread, started 140184637138704)> ('nomsg',)
[Sun Sep 26 20:03:24 2010] [error] <HeartbeatThread(HeartbeatThread, started 140184721078032)> ('beat done',)

 

怎么又开始初始化了呢?

 

后来发现是因为apache的prefork模式。在fork之前每个单独的进程都认为那个module没有初始化,于是就初始化了,导致n个进程同时登录。

 

现在在想,到底是把飞信做成webservice,还是干脆改用worker模式。

分享到:
评论

相关推荐

    Apache的prefork模式和worker模式该户.docx

    prefork 模式更适合内存有限且需要高度稳定性的环境,而 worker 模式则适用于需要处理大量并发请求且所有模块都线程安全的情况。但请注意,不是所有 PHP 模块都支持线程安全,因此在使用 worker 模式时需要额外注意...

    Apache Prefork、Worker和Event三种MPM详解

    **Prefork MPM** 是 Apache 提供的一种多处理模块(MPM),它实现了非线程化的、预分叉的 Web 服务器架构,类似于 Apache 1.3 的工作方式。该 MPM 适用于那些没有线程安全库或者需要避免线程兼容性问题的系统。它...

    apache2-prefork-2.2.22-4.7.1.x86_64.rpm

    apache2-prefork 64位快速安装包

    apache2-prefork-2.2.22.i586.rpm

    Linux 下apache2-prefork-2.2.22-i586.rpm 快速安装包

    Apache的fork模式和worker模式判断方法

    apache常用的工作模式有prefork和worker模式。运行命令httpd -l 或者apache2 -l ,输出的结果中如果含有prefork.c,那就是prefork模式,如果结果中含有worker.c,那就是worker模式。 知道模式之后我们可以在apache的...

    Apache模块开发指南

    3. **模块生命周期**:每个Apache模块都有自己的生命周期,包括初始化、请求处理和清理阶段。学习如何在这些阶段中正确地设置和清理资源至关重要。 4. **配置指令**:Apache模块可以通过配置指令来影响服务器行为。...

    Apache源代码全景分析第1卷:体系结构与核心模块 part1

    包括配置文件、模块化结构、多任务并发,以及网络连接和请求读取,其中多任务并发体系结构是《Apache源代码全景分析第1卷:体系结构与核心模块》分析的重点,讨论了Prefork、Worker及WinNT三种MPM。《Apache源代码...

    Apache源代码全景分析第1卷:体系结构与核心模块 part2

    包括配置文件、模块化结构、多任务并发,以及网络连接和请求读取,其中多任务并发体系结构是《Apache源代码全景分析第1卷:体系结构与核心模块》分析的重点,讨论了Prefork、Worker及WinNT三种MPM。《Apache源代码...

    Apache的两种工作模式

    Apache的两种工作模式: prefork模式: 使用多个子进程,每个子进程只包含一个线程 特点:效率高,内存使用率高 worker模式 使用多个子进程,每个子进程包含多个线程 特点:内存使用率低,一个线程崩溃,整个...

    write apache module

    1. **多线程与多进程模型**:根据Apache的运行模式(例如, prefork或worker模型),模块可能需要处理多线程或多进程环境下的并发问题。 2. **性能优化**:模块设计应考虑性能影响,避免阻塞I/O操作,合理使用内存...

    Apache体系结构ppt

    Apache支持两种主要的工作模式:预读取(Prefork)和worker模式。预读取模式下,Apache会预先创建多个子进程来处理请求,适合资源丰富的环境;worker模式则采用多线程,每个进程包含多个线程,适合内存有限但CPU...

    apache2的worker工作模式配置及MaxClients不足问题解决

    在 Worker 工作模式下,Apache 服务器使用多个子进程来处理客户端请求,每个子进程可以处理多个请求。然而,在 Worker 工作模式下,Apache 服务器也存在一些限制,例如 MaxClients 设置不足的问题。 MaxClients ...

    apache 2.2.29-x64

    5. **性能优化**:Apache 2.2引入了MPM(多进程模块),如Prefork MPM和Worker MPM,它们分别对应于进程模型和线程模型,以提高服务器处理并发请求的能力。用户可以根据服务器硬件资源和负载情况选择合适的MPM。 6....

    查看apache连接的连接并发数

    在prefork模式下,Apache服务器会启动多个httpd进程,每个进程可以处理多个请求。StartServers参数指定了Apache服务器启动时的初始进程数,MinSpareServers参数指定了服务器空闲时的最少进程数,MaxSpareServers参数...

    Apache Server源代码分析(PDF)

    首先,Apache服务器的核心设计基于模块化架构,这意味着它由多个可插拔的模块组成,每个模块负责特定的功能,如HTTP协议处理、身份验证、日志记录等。源代码分析中,我们可以看到如何编写和集成这些模块,以及它们...

    Apache2.2中文手册

    为了提升性能,Apache2.2引入了多进程(MPM)模型,如Prefork和Worker模式。Prefork模式适用于内存充足的环境,每个进程只有一个线程;Worker模式则支持多线程,适合高并发场景。还可以通过调整MaxKeepAliveRequests...

    Apache 2.2中文手册

    4. **性能优化**:Apache 2.2提供了多种性能优化策略,如MPM(多进程模块)的选择,预读取(Prefork)、线程化(Worker)或者事件驱动(Event)模式,以及缓存机制和GZIP压缩等。 5. **错误处理与调试**:手册会...

    apache 2.4

    Apache 2.4延续了其模块化的架构,允许用户根据需求加载或卸载不同的功能模块。例如,mod_rewrite用于URL重写,mod_security用于增强安全性,mod_deflate用于内容压缩等。这种设计提供了高度的灵活性和可扩展性。 ...

Global site tag (gtag.js) - Google Analytics