============================================================================
原创作品,允许转载。转载时请务必以超链接形式标明原始出处、以及本声明。
请注明转自: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才能重新正常工作。
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的持久化方式。
相关推荐
本文简述了gearman用mysql持久化的方法,以及由此引发的一些问题,具体分析如下: 一、gearman 创建Mysql持久化队列的方式如下: 1. 登入mysql命令行,运行: create database gearman; 2. 启动gearman,命令...
要在 MySQL 中实现 Gearman 的持久化,首先需要创建一个名为 `gearman` 的数据库,然后创建一个名为 `gearman_queue` 的表,该表包含任务的关键字段,如 `unique_key`(任务唯一标识)、`function_name`(任务函数...
在实际应用中,你可能还需要考虑任务的持久化存储、监控和日志管理等高级特性。`gearman安装笔记.zip`可能包含更详细的安装步骤和配置示例,供你在搭建过程中参考。 总之,Gearman提供了一种灵活的框架,用于在...
- **持久化**:虽然 Gearman 不直接支持任务的持久化存储,但可以通过结合其他工具(如数据库或消息队列系统)实现,以保证任务在服务器重启后不会丢失。 - **多语言支持**:Gearman 提供了多种编程语言的客户端库...
- **故障恢复**:通过 Gearman 的任务持久化和重试机制,保障任务的可靠执行。 这个 "gearman-mysql-udf-0.6" 压缩包是将 Gearman 强大的分布式处理能力引入到 MySQL 数据库的一个实例,通过这种方式,开发者可以...
- **持久化**:可以选择将任务存储在磁盘上,以防止因服务器重启而丢失未完成的任务。 - **客户端/服务器架构**:简单且灵活的设计,客户端可以向服务器提交任务,服务器将任务分发给工作者。 - **多语言支持**:...
MySQL作为一款关系型数据库管理系统,在数据持久化方面表现出色;而Redis作为一款内存中的数据结构存储系统,在缓存、消息队列等方面有广泛的应用。两者的结合可以充分发挥各自的优势:MySQL用于存储核心数据,确保...
* Monitor:配置中心化心跳检测,负责配置持久化存储和心跳检查。 * Dispatcher:负载调度器,负责将任务推送到空闲unit上,并对空闲资源采取轮询策略。 * Frontend:用户接口,扫描开始将task推送至合适的...
除了基本的 Jobserver 使用,还可以探索更高级的特性,如任务优先级、并发控制、持久化存储等。同时,可以考虑使用 Laravel 的 Horizon 监控工具来优化队列性能。 总之,将 Gearman Jobserver 集成到 Laravel 开发...
6. **持久化存储**: Gearmand 可以配置为使用持久化存储,以防止因服务器重启而丢失未完成的任务。这在需要确保任务执行完整性的场景下非常有用。 7. **监控与管理**:Gearmand 提供了一个命令行工具,用于监控...
它支持多种语言编写的worker,如Python、Java、Node.js以及Golang等,并提供了数据持久化和群集支持。Gearman的客户端广泛,使用Gearman可以大大简化异步操作的实现。通过向Gearman发送任务,然后由worker调用PHP...
此外,Redis的持久化功能确保了数据的安全性。 为了处理高并发的请求,HipChat采用了**Gearman** 作为队列服务,以及**Curler** 作为worker服务器,实现任务的异步处理。系统配置和部署则借助开源工具Chef和Fabric...
要启动带有持久化功能的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=...
- **任务队列**:存储待处理的任务,可以是数据库、文件、内存或者其他持久化存储。 - **任务调度**:根据任务优先级、依赖关系等条件决定何时执行哪个任务。 - **任务执行**:通过CLI或者守护进程的方式运行任务。 ...
7. **持久化存储**:任务的状态和元数据通常需要存储在数据库或文件系统中,以便于跟踪和恢复。 8. **负载均衡**:当任务量较大时,可能需要多台服务器共享任务,这就需要负载均衡策略来合理分配任务。 9. **监控...