詳解 優化API介面響應速度的套路

2021-08-08 09:57:05 字數 2171 閱讀 7097

api介面響應慢?

sla一直提不上去?

其實這是後端程式設計師想高階必須要跨過去的坎:就是把它優化掉。

那麼這其中到底有沒有套路呢?答案是:有的。

本文將介紹目前正在用並且十分「無腦」有效的這個套路。

首先呢,第一部肯定是在關鍵函式(有db、檔案、複雜計算等操作)的前後,進行時間的記錄。

這裡分享乙個前文跟蹤的類trace.php

<?php

class trace

function start($type, $time=0)

if($this->single_mode) else

}function stop($type, $time=0)

if($this->single_mode) else

}function time($type) else

}function log($type)

function logall($prefix = '', $ext = array()) else

if(!empty($log))

}function output($with_endtime = true) else }}

}}

return $output;

}function reset($type = null) else

return $this;

}function enabletrace($exit = true)

}?>

怎麼使用呢?

$trace = loadclass('trace');

$trace->enabletrace(true);

$trace->start('total');

$trace->start('func1');

$this->run_slow_function1();

$trace->stop('func1');

$trace->start('func2');

$this->run_slow_function2();

$trace->stop('func2');

$trace->stop('total');

$trace->logall('咖啡色的羊駝');

$trace->reset();

此時去找trace_咖啡色的羊駝_log就可以找到每一步跑的時間。根據實際可以一眼看出是哪一步跑慢了。那麼這一步就是主要優化的方向了。

ps:此類對線上介面產生的耗時基本可以忽略,所以放心用。

既然找到了跑得慢的函式。那麼就開始優化吧。

先說前提:前端已有lvs負載均衡、nginx反向****請求。

首先需要分析為何跑慢了?

1.是不是資源層面的瓶頸?

2.是不是快取沒新增,如果加了,是不是熱點資料導致負載不均衡?

3.是不是有依賴於第三方介面?

4.是不是介面涉及業務太多,導致程式跑很久?

5.是不是sql層面的問題導致的等待時機加長,進而拖慢介面?

6.網路層面的原因?頻寬?dns解析?

7.**確實差???

8.未知?

對症下藥

1.資源緊張,加機器,幹上去,負載均衡搞起來

2.加快取可以解決的問題都不是什麼大問題,存在熱點資料可以將某幾個熱點單獨出來用專門的機器進行處理,不要因為區域性影響整體

3.一方面與第三方溝通介面響應問題,另一方面超時時間注意把控,如果可以非核心業務能非同步久非同步掉。

4.把非核心的業務進行非同步化操作。記住如果**層面是非核心業務,但是會影響使用者感知,需要慎重決定是否非同步。

5.如果是**不良導致加鎖了,盡量優化索引或sql語句,讓鎖的級別最小(到行),一般來說到行差不多了。如果是單個sql跑慢了,需要分析是不是索引沒加活著sql選的索引錯了,索引該加的就加了,該force index也加了。

6.網路原因,需要聯絡運營商一起商量下怎麼解決,單方面比較難有大的優化。

7.**確實差,那也無藥可救了。我選擇狗帶。

通用套路

非同步化

API介面響應速度追蹤類

api介面響應慢?sla一直提不上去?其實這是後端程式設計師想高階必須要跨過去的坎 就是把它優化掉。那麼這其中到底有沒有套路呢?答案是 有的。本文將介紹目前正在用並且十分 無腦 有效的這個套路。埋點追蹤分析,找出真兇 首先呢,第一部肯定是在關鍵函式 有db 檔案 複雜計算等操作 的前後,進行時間的記...

PHP專案響應速度優化

專案可優化範圍很廣,這裡我們只討論php程式本身的加速。開啟opcache。zend引擎每次都會把php 解析成opcode,開啟opcache後,會快取opcode。伺服器的gcc編譯器使用4.8 zend處理opcode部分的優化gcc4.8 才支援,官方稱會帶來5 效能提公升。跟第一條的opc...

PHP專案響應速度優化

專案可優化範圍很廣,這裡我們只討論php程式本身的加速。開啟opcache。zend引擎每次都會把php 解析成opcode,開啟opcache後,會快取opcode。伺服器的gcc編譯器使用4.8 zend處理opcode部分的優化gcc4.8 才支援,官方稱會帶來5 效能提公升。跟第一條的opc...