GBase 8a 在SQL语句包含很多or, in等需要大量堆栈操作的的情况下,可能因为线程栈(thread_stack)太小导致爆栈宕机。需要配置gcluster及gnode的线程栈大小。
类似SQL比如,有大量的 or 条件(a=1 or a=2 or a=3 or a=3 .... ), in 值条件(a in (1,2,3,4,5......)的SQL,参数在几千,几万个甚至更多的SQL。
推荐gcluster的thread_stack为4M(新版版本默认大小,老版本默认为2M);推荐gnode的thread_stack为512K(默认256K)。如依然发生爆栈问题,则继续调大该参数。
在gcluster和gnode的配置文件中,如在gnode配置文件中增加配置thread_stack = 524288。配置后需要重启服务。