phpcurl 請求Chunked-Encoded data 遇到的一個問題
2016-10-21 16:51 by 軒脈刃, 105 閱讀, 0 評論, 收藏, 編輯最早出現的問題情況是提供es的部門在es的外部封裝了一個gateway做請求中轉。
當我們轉換到gateway上之后,發(fā)現了問題:
有的請求可以獲取到數據,有的請求獲取不到數據。
仔細分析了業(yè)務代碼,抽取了一個出問題的業(yè)務請求,這個業(yè)務請求里面包含了多次對es的請求,只有最后一個es請求拋出異常,其他都正常。
ps: 我們的業(yè)務是使用php寫的,使用了https://github.com/elastic/elasticsearch-php這個包進行es請求的。
初步分析
當然,我們沒有把錯誤信息對外,首先看我們自己的日志,看到的錯誤信息是:
No alive nodes found in your cluster at elasticsearch/elasticsearch/src/Elasticsearch/ConnectionPool/StaticNoPingConnectionPool.php:51
這個錯誤第一反應是是不是新的這個gateway節(jié)點有問題啊?但是想想這是不可能的,因為并不是所有請求都不可以,而且找了gateway部門的同事問了下,也不存在對請求單獨處理的邏輯。
那么繼續(xù)看到StaticNoPingConnectionPool.php
public function nextConnection($force = false) {
$total = count($this->connections); while ($total--) { /** @var Connection $connection */ $connection = $this->selector->select($this->connections); if ($connection->isAlive() === true) { return $connection;
} if ($this->readyToRevive($connection) ===
網友評論