注意:我正在寻找有关如何调试此问题的任何提示,不一定是对该特定问题的直接答案。
我正在测量在我们的系统中使用的PipelineDB的性能。 我定义了几个连续的视图(计算总和,top-K等),并从单个流(其中有约20列,一些文本,主要是整数和布尔值)进行馈送。 该测试是用Python编写的,我正在使用psycopg2 cursor.copy_from()函数来实现最高性能。 当连续视图指定的工作不太复杂时,PipelineDB表现良好。 但是,当我要求它计算许多top-K结果或许多percentile_cont()值时,该测试将挂起并出现以下症状:
下面是“ ps -ef”命令的输出,该命令显示了大约一分钟或运行测试后的所有pipelinedb进程。请注意,自测试开始以来,worker0进程正在消耗100%的CPU。它永远不会恢复正常工作(“顶部”表明它正消耗100%的CPU)
测试日志显示,它在大约前1秒内运行正常,插入了约30,000个事件(每100个批次),然后挂起,因为对copy_from()函数的调用未返回。
当我减少PipelineDB的工作量时(通过删除一些连续视图),该测试工作正常,每秒最多可插入20,000次,并持续至少一分钟。
我想指出的是,所有事件都具有相同的时间戳,并且所有视图都具有“ GROUP BY minutes”子句,因此在测试期间,应在每个连续视图中创建/更新一行。
我已经使用了一些配置参数,特别是那些与内存缓冲区大小,同步方法,时间间隔,max_wait等有关的参数,以及工作量,并且找不到可以避免该问题的任何组合。
我不知道我遇到了PipelineDB问题还是PostgreSQL问题。 当然,这不是预期的行为,在实际应用中是不能容忍的。 任何提示,猜测,直觉都是可以接受的。
[orens@rd10 ~]$ps -ef | grep pipelinedb
UID PID PPID C STIME TTY TIME CMD
orens 3005 3004 0 11:17 ? 00:00:00 pipelinedb: logger process
orens 3007 3004 0 11:17 ? 00:00:00 pipelinedb: checkpointer process
orens 3008 3004 0 11:17 ? 00:00:00 pipelinedb: writer process
orens 3009 3004 0 11:17 ? 00:00:00 pipelinedb: wal writer process
orens 3010 3004 0 11:17 ? 00:00:00 pipelinedb: autovacuum launcher process
orens 3011 3004 0 11:17 ? 00:00:00 pipelinedb: stats collector process
orens 3012 3004 0 11:17 ? 00:00:00 pipelinedb: pipelinedb scheduler process
orens 3014 3004 0 11:17 ? 00:00:00 pipelinedb: bgworker: reaper0 [pipeline]
orens 3015 3004 0 11:17 ? 00:00:00 pipelinedb: bgworker: queue0 [pipeline]
orens 3016 3004 0 11:17 ? 00:00:00 pipelinedb: bgworker: combiner1 [pipeline]
orens 3017 3004 0 11:17 ? 00:00:00 pipelinedb: bgworker: combiner0 [pipeline]
orens 3018 3004 0 11:17 ? 00:00:00 pipelinedb: bgworker: worker0 [pipeline]
orens 3046 3004 0 11:17 ? 00:00:00 pipelinedb: bgworker: reaper0 [db1]
orens 3050 3004 0 11:17 ? 00:00:00 pipelinedb: bgworker: queue0 [db1]
orens 3052 3004 0 11:17 ? 00:00:00 pipelinedb: bgworker: combiner0 [db1]
orens 3056 3004 90 11:17 ? 00:01:06 pipelinedb: bgworker: worker0 [db1]
orens 3132 3004 1 11:17 ? 00:00:01 pipelinedb: ut_user db1 ::1(58830) COPY
[orens@rd10 ~]$