adjust faststack parameter
This commit is contained in:
		@ -31,6 +31,9 @@ namespace oceanbase
 | 
			
		||||
{
 | 
			
		||||
namespace common
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
int64_t FASTSTACK_MIN_INTERVAL = 30 * 60 * 1000 * 1000; // 30min
 | 
			
		||||
 | 
			
		||||
static const int SIG_SET[] = {SIGABRT, SIGBUS, SIGFPE, SIGSEGV, SIGURG};
 | 
			
		||||
static constexpr char MINICORE_SHELL_PATH[] = "tools/minicore.sh";
 | 
			
		||||
static constexpr char FASTSTACK_SHELL_PATH[] = "tools/callstack.sh";
 | 
			
		||||
@ -261,12 +264,11 @@ int minicoredump(int sig, int64_t tid, pid_t& pid)
 | 
			
		||||
 | 
			
		||||
int faststack()
 | 
			
		||||
{
 | 
			
		||||
  static constexpr int64_t MIN_INTERVAL = 30 * 60 * 1000 * 1000; // 30min
 | 
			
		||||
  static int64_t last_ts = 0;
 | 
			
		||||
  int64_t now = ObTimeUtility::fast_current_time();
 | 
			
		||||
  int64_t last = ATOMIC_LOAD(&last_ts);
 | 
			
		||||
  int ret = OB_SUCCESS;
 | 
			
		||||
  if (now - last < MIN_INTERVAL) {
 | 
			
		||||
  if (now - last < FASTSTACK_MIN_INTERVAL) {
 | 
			
		||||
    ret = OB_EAGAIN;
 | 
			
		||||
  } else if (!ATOMIC_BCAS(&last_ts, last, now)) {
 | 
			
		||||
    ret = OB_EAGAIN;
 | 
			
		||||
 | 
			
		||||
@ -66,6 +66,8 @@ using namespace oceanbase::obrpc;
 | 
			
		||||
#define EXPAND_INTERVAL (1 * 1000 * 1000)
 | 
			
		||||
#define SHRINK_INTERVAL (1 * 1000 * 1000)
 | 
			
		||||
 | 
			
		||||
int64_t FASTSTACK_REQ_QUEUE_SIZE_THRESHOLD = INT64_MAX;
 | 
			
		||||
 | 
			
		||||
extern "C" {
 | 
			
		||||
int ob_pthread_create(void **ptr, void *(*start_routine) (void *), void *arg);
 | 
			
		||||
int ob_pthread_tryjoin_np(void *ptr);
 | 
			
		||||
@ -1344,7 +1346,7 @@ int ObTenant::recv_request(ObRequest &req)
 | 
			
		||||
  if (OB_SUCC(ret)) {
 | 
			
		||||
    ObTenantStatEstGuard guard(id_);
 | 
			
		||||
    EVENT_INC(REQUEST_ENQUEUE_COUNT);
 | 
			
		||||
  } else if (OB_SIZE_OVERFLOW == ret) {
 | 
			
		||||
  } else if (OB_SIZE_OVERFLOW == ret || req_queue_.size() >= FASTSTACK_REQ_QUEUE_SIZE_THRESHOLD) {
 | 
			
		||||
    IGNORE_RETURN faststack();
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user