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

gearman队列持久化带来的问题

阅读更多

============================================================================

原创作品,允许转载。转载时请务必以超链接形式标明原始出处、以及本声明。

请注明转自:http://yunjianfei.iteye.com/blog/

============================================================================

gearman 创建Mysql持久化队列的方式如下:

1. 登入mysql命令行,运行:    

create database gearman;

 2. 启动gearman,命令如下:

 

 

 /usr/local/gearman/sbin/gearmand -p 4730 -L 0.0.0.0 --log-file=/tmp/gearmand-4730.log --pid-file=/tmp/gearmand-4730.pid -q MySQL --mysql-host=localhost --mysql-user=root --mysql-db=gearman --verbose DEBUG  -d
 

 具体的参数,根据自己的服务器状况去修改就行了。

 

3. 再次登入mysql命令行,执行:

 

use gearman;
show tables;

 就可以看到下面多了个“gearman_queue”的表。

 

 

这样,gearman就变成了持久化的方式。

 

=============================================================================

 

gearman用mysql持久化之后,其实会带来一些问题。

1. 每个任务都会写入数据库,这样会带来磁盘IO的损耗,并且gearman的性能瓶颈又多了一个可能,就是由数据库引起的性能问题。

2. mysql有个“wait_timeout”的参数,在mysql命令行中运行

show variables like "%timeout%";

 可以看到wait_timeout的值,默认是28800。也就是说,如果一个mysql的连接,超过28800s没有任何响应,就会断开。

 

3. gearman持久化的方式,如果超过了mysql的wait_timeouts的时间没有任何响应,和数据库的连接就会被mysql断开,而且gearman目前是没有mysql重新连接的,结果就是,会导致如下错误,必须重启gearman才能重新正常工作。

 

gearman报错 
ERROR 2014-04-01 02:10:02.897899 [ proc ] mysql_stmt_execute failed: -> libgearman-server/plugins/queue/mysql/queue.cc:357
ERROR 2014-04-01 02:10:02.897910 [ proc ] gearman_server_job_add gearman_server_run_command(QUEUE_ERROR) -> libgearman-server/server.cc:301

 

所以,gearman持久化方式带来的缺点显而易见,该方式下,要避免gearman对mysql连接超时断开,可以将mysql的wait_timeout参数改大。

 

或者,直接放弃用mysql的持久化方式。

 

0
0
分享到:
评论

相关推荐

    gearman队列持久化引发的问题及解决方法

    本文简述了gearman用mysql持久化的方法,以及由此引发的一些问题,具体分析如下: 一、gearman 创建Mysql持久化队列的方式如下: 1. 登入mysql命令行,运行:  create database gearman;  2. 启动gearman,命令...

    gearman + mysql方式实现持久化操作示例

    要在 MySQL 中实现 Gearman 的持久化,首先需要创建一个名为 `gearman` 的数据库,然后创建一个名为 `gearman_queue` 的表,该表包含任务的关键字段,如 `unique_key`(任务唯一标识)、`function_name`(任务函数...

    Gearman环境搭建资料

    在实际应用中,你可能还需要考虑任务的持久化存储、监控和日志管理等高级特性。`gearman安装笔记.zip`可能包含更详细的安装步骤和配置示例,供你在搭建过程中参考。 总之,Gearman提供了一种灵活的框架,用于在...

    gearman-1.0.2.tgz

    - **持久化**:虽然 Gearman 不直接支持任务的持久化存储,但可以通过结合其他工具(如数据库或消息队列系统)实现,以保证任务在服务器重启后不会丢失。 - **多语言支持**:Gearman 提供了多种编程语言的客户端库...

    gearman-mysql-udf-0.6.tar.gz

    - **故障恢复**:通过 Gearman 的任务持久化和重试机制,保障任务的可靠执行。 这个 "gearman-mysql-udf-0.6" 压缩包是将 Gearman 强大的分布式处理能力引入到 MySQL 数据库的一个实例,通过这种方式,开发者可以...

    gearman-0.8.0.tgz

    - **持久化**:可以选择将任务存储在磁盘上,以防止因服务器重启而丢失未完成的任务。 - **客户端/服务器架构**:简单且灵活的设计,客户端可以向服务器提交任务,服务器将任务分发给工作者。 - **多语言支持**:...

    通过Gearman来同步Mysql和Redis

    MySQL作为一款关系型数据库管理系统,在数据持久化方面表现出色;而Redis作为一款内存中的数据结构存储系统,在缓存、消息队列等方面有广泛的应用。两者的结合可以充分发挥各自的优势:MySQL用于存储核心数据,确保...

    藏经阁-360病毒样本大规模异构实时扫描平台.pdf

    * Monitor:配置中心化心跳检测,负责配置持久化存储和心跳检查。 * Dispatcher:负载调度器,负责将任务推送到空闲unit上,并对空闲资源采取轮询策略。 * Frontend:用户接口,扫描开始将task推送至合适的...

    Laravel开发-jobserver

    除了基本的 Jobserver 使用,还可以探索更高级的特性,如任务优先级、并发控制、持久化存储等。同时,可以考虑使用 Laravel 的 Horizon 监控工具来优化队列性能。 总之,将 Gearman Jobserver 集成到 Laravel 开发...

    gearmand1.1.8

    6. **持久化存储**: Gearmand 可以配置为使用持久化存储,以防止因服务器重启而丢失未完成的任务。这在需要确保任务执行完整性的场景下非常有用。 7. **监控与管理**:Gearmand 提供了一个命令行工具,用于监控...

    关于PHP实现异步操作的研究

    它支持多种语言编写的worker,如Python、Java、Node.js以及Golang等,并提供了数据持久化和群集支持。Gearman的客户端广泛,使用Gearman可以大大简化异步操作的实现。通过向Gearman发送任务,然后由worker调用PHP...

    兄弟连lamp高级

    - **非索引字段优化**:减少非索引字段的大小,存储到持久化存储中。 - **频繁更新表处理**:采用双表策略,目表+内存表。 通过以上内容的学习和实践,可以深入了解PHP高级开发的相关知识和技术,掌握LAMP环境下的...

    利用elasticsearch和redis检索和存储十亿信息.doc

    此外,Redis的持久化功能确保了数据的安全性。 为了处理高并发的请求,HipChat采用了**Gearman** 作为队列服务,以及**Curler** 作为worker服务器,实现任务的异步处理。系统配置和部署则借助开源工具Chef和Fabric...

    rhel5.7下安装gearmand及启动的方法

    要启动带有持久化功能的Gearmand服务,使用如下命令: ``` /usr/local/gearman/sbin/gearmand -p 4730 -L 0.0.0.0 --log-file=/tmp/gearmand-4730.log --pid-file=/tmp/gearmand-4730.pid -q MySQL --mysql-host=...

    BackgroundPHPtasks:PHP类来管理在后台启动的长(或不长)脚本

    - **任务队列**:存储待处理的任务,可以是数据库、文件、内存或者其他持久化存储。 - **任务调度**:根据任务优先级、依赖关系等条件决定何时执行哪个任务。 - **任务执行**:通过CLI或者守护进程的方式运行任务。 ...

    任务管理器

    7. **持久化存储**:任务的状态和元数据通常需要存储在数据库或文件系统中,以便于跟踪和恢复。 8. **负载均衡**:当任务量较大时,可能需要多台服务器共享任务,这就需要负载均衡策略来合理分配任务。 9. **监控...

Global site tag (gtag.js) - Google Analytics