提交 184593c1 编写于 作者: Z zhaoanan

add worker queue limit to pika and pink

上级 5429dc6c
......@@ -13,9 +13,14 @@
class PikaDispatchThread : public pink::DispatchThread<PikaClientConn>
{
public:
PikaDispatchThread(int port, int work_num, PikaWorkerThread** pika_worker_thread, int cron_interval);
PikaDispatchThread(std::string &ip, int port, int work_num, PikaWorkerThread** pika_worker_thread, int cron_interval);
PikaDispatchThread(std::set<std::string> &ips, int port, int work_num, PikaWorkerThread** pika_worker_thread, int cron_interval);
PikaDispatchThread(int port, int work_num, PikaWorkerThread** pika_worker_thread,
int cron_interval, int queue_limit);
PikaDispatchThread(std::string &ip, int port, int work_num,
PikaWorkerThread** pika_worker_thread,
int cron_interval, int queue_limit);
PikaDispatchThread(std::set<std::string> &ips, int port, int work_num,
PikaWorkerThread** pika_worker_thread,
int cron_interval, int queue_limit);
virtual ~PikaDispatchThread();
virtual bool AccessHandle(std::string& ip);
......
......@@ -12,16 +12,28 @@
extern PikaServer* g_pika_server;
extern PikaConf* g_pika_conf;
PikaDispatchThread::PikaDispatchThread(int port, int work_num, PikaWorkerThread** pika_worker_thread, int cron_interval) :
DispatchThread::DispatchThread(port, work_num, reinterpret_cast<pink::WorkerThread<PikaClientConn>**>(pika_worker_thread), cron_interval) {
PikaDispatchThread::PikaDispatchThread(int port, int work_num,
PikaWorkerThread** pika_worker_thread,
int cron_interval, int queue_limit) :
DispatchThread::DispatchThread(port, work_num,
reinterpret_cast<pink::WorkerThread<PikaClientConn>**>(pika_worker_thread),
cron_interval, queue_limit) {
}
PikaDispatchThread::PikaDispatchThread(std::string &ip, int port, int work_num, PikaWorkerThread** pika_worker_thread, int cron_interval) :
DispatchThread::DispatchThread(ip, port, work_num, reinterpret_cast<pink::WorkerThread<PikaClientConn>**>(pika_worker_thread), cron_interval) {
PikaDispatchThread::PikaDispatchThread(std::string &ip, int port, int work_num,
PikaWorkerThread** pika_worker_thread,
int cron_interval, int queue_limit) :
DispatchThread::DispatchThread(ip, port, work_num,
reinterpret_cast<pink::WorkerThread<PikaClientConn>**>(pika_worker_thread),
cron_interval, queue_limit) {
}
PikaDispatchThread::PikaDispatchThread(std::set<std::string> &ips, int port, int work_num, PikaWorkerThread** pika_worker_thread, int cron_interval) :
DispatchThread::DispatchThread(ips, port, work_num, reinterpret_cast<pink::WorkerThread<PikaClientConn>**>(pika_worker_thread), cron_interval) {
PikaDispatchThread::PikaDispatchThread(std::set<std::string> &ips, int port, int work_num,
PikaWorkerThread** pika_worker_thread,
int cron_interval, int queue_limit) :
DispatchThread::DispatchThread(ips, port, work_num,
reinterpret_cast<pink::WorkerThread<PikaClientConn>**>(pika_worker_thread),
cron_interval, queue_limit) {
}
PikaDispatchThread::~PikaDispatchThread() {
......
......@@ -79,7 +79,10 @@ PikaServer::PikaServer() :
ips.insert("127.0.0.1");
ips.insert(host_);
}
pika_dispatch_thread_ = new PikaDispatchThread(ips, port_, worker_num_, pika_worker_thread_, 3000);
// We estimate the queue size
int worker_queue_limit = g_pika_conf->maxclients() / worker_num_ + 100;
LOG(INFO) << "Worker queue limit is " << worker_queue_limit;
pika_dispatch_thread_ = new PikaDispatchThread(ips, port_, worker_num_, pika_worker_thread_, 3000, worker_queue_limit);
pika_binlog_receiver_thread_ = new PikaBinlogReceiverThread(ips, port_ + 1000, 1000);
pika_heartbeat_thread_ = new PikaHeartbeatThread(ips, port_ + 2000, 1000);
pika_trysync_thread_ = new PikaTrysyncThread();
......
Subproject commit d79006e16d4a8c09990dad1f2b0105f7909d95e3
Subproject commit 074182af2cb90fa5726f9e6de1a6f6d29f2c7a3f
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册