久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

Linux私有化部署IP歸屬地查詢服務(wù):MMDB與高性能實(shí)踐

Linux私有化部署IP歸屬地查詢服務(wù):MMDB與高性能實(shí)踐 1. 為什么要把IP查詢能力攥在自己手里做后端開發(fā)或者運(yùn)維的朋友大概率都遇到過(guò)這樣的場(chǎng)景用戶登錄日志里需要記錄歸屬地、風(fēng)控系統(tǒng)要判斷異地登錄、CDN調(diào)度要按地域做分流、甚至運(yùn)營(yíng)后臺(tái)想看看用戶都從哪些城市來(lái)。這些需求背后都指向同一個(gè)基礎(chǔ)能力——IP地址查詢。早期圖省事很多人直接調(diào)第三方公開接口傳個(gè)IP過(guò)去返回省市區(qū)。但用著用著問題就來(lái)了免費(fèi)接口有頻率限制QPS一上來(lái)就給你返回429商業(yè)接口按調(diào)用量計(jì)費(fèi)日活稍微漲一漲賬單就跟著漲更麻煩的是數(shù)據(jù)出境合規(guī)問題用戶IP屬于個(gè)人信息每次查詢都往外部服務(wù)發(fā)審計(jì)的時(shí)候說(shuō)不清楚。還有一個(gè)容易被忽略的點(diǎn)——延遲。第三方接口再快也要走公網(wǎng)一次查詢幾十毫秒高并發(fā)場(chǎng)景下這就是實(shí)打?qū)嵉男阅軗p耗。所以這兩年我經(jīng)手的項(xiàng)目里只要涉及IP歸屬地查詢基本都走私有化部署這條路。所謂私有化部署說(shuō)白了就是把IP庫(kù)和查詢服務(wù)裝在自己的Linux服務(wù)器上數(shù)據(jù)不出內(nèi)網(wǎng)查詢走本地回環(huán)QPS想拉多高拉多高成本就是一臺(tái)機(jī)器的錢。這篇文章就把我踩過(guò)坑、調(diào)過(guò)優(yōu)的一套完整方案拆開來(lái)講從選庫(kù)、裝環(huán)境、寫服務(wù)到壓測(cè)調(diào)優(yōu)盡量讓不同基礎(chǔ)的朋友都能照著復(fù)現(xiàn)。適合誰(shuí)看如果你是后端開發(fā)、運(yùn)維工程師、SRE或者正在做風(fēng)控、日志分析、用戶畫像相關(guān)的系統(tǒng)這套方案可以直接抄作業(yè)。如果你只是偶爾查幾個(gè)IP那用在線工具就夠了沒必要折騰。但只要你面對(duì)的是日均百萬(wàn)級(jí)以上的查詢量或者對(duì)數(shù)據(jù)合規(guī)有硬性要求私有化部署就是繞不開的選擇。2. 方案整體設(shè)計(jì)與選型思路2.1 私有化部署到底解決了哪些痛點(diǎn)先把賬算清楚。假設(shè)你的系統(tǒng)日均查詢量是500萬(wàn)次用某商業(yè)API按每萬(wàn)次幾毛錢算一個(gè)月下來(lái)也是幾百到上千塊一年就是大幾千。而私有化部署呢一臺(tái)2核4G的云服務(wù)器一年成本也就幾百塊IP庫(kù)用開源的查詢服務(wù)自己寫邊際成本幾乎為零。查詢量越大私有化的優(yōu)勢(shì)越明顯。除了成本還有三個(gè)硬指標(biāo)是第三方接口給不了的。第一是延遲可控本地查詢走內(nèi)存或本地文件單次查詢可以壓到微秒級(jí)而公網(wǎng)接口再優(yōu)化也難低于10毫秒。第二是穩(wěn)定性自主不用擔(dān)心對(duì)方接口掛了、限流了、或者突然改計(jì)費(fèi)規(guī)則。第三是數(shù)據(jù)合規(guī)用戶IP不離開自己的服務(wù)器審計(jì)的時(shí)候底氣足。提示私有化部署不是沒有代價(jià)的。你需要自己維護(hù)IP庫(kù)的更新自己處理服務(wù)的高可用自己扛住查詢壓力。如果團(tuán)隊(duì)沒有運(yùn)維能力或者查詢量很小老老實(shí)實(shí)用第三方接口反而更省心。2.2 IP庫(kù)格式怎么選MMDB還是CSVIP庫(kù)的原始數(shù)據(jù)通常有兩種形態(tài)一種是純文本的CSV一行一個(gè)網(wǎng)段加歸屬地信息另一種是二進(jìn)制格式最典型的就是MMDBMaxMind DB格式。這兩種格式的選擇直接決定了你后面查詢服務(wù)的實(shí)現(xiàn)方式。CSV的好處是直觀用文本編輯器就能看方便做數(shù)據(jù)清洗和二次加工。但缺點(diǎn)也很明顯文件體積大全量加載到內(nèi)存占空間查詢的時(shí)候要么全表掃描要么自己建索引性能很難做上去。我試過(guò)用CSV加二分查找單次查詢大概在幾十微秒但內(nèi)存占用是MMDB的好幾倍。MMDB是專門為IP查詢?cè)O(shè)計(jì)的二進(jìn)制格式內(nèi)部用了一種叫二叉搜索樹的結(jié)構(gòu)查詢的時(shí)候按IP的二進(jìn)制位逐位比較時(shí)間復(fù)雜度是O(32)或者O(128)跟數(shù)據(jù)量無(wú)關(guān)。文件體積小加載快查詢穩(wěn)定在微秒級(jí)。缺點(diǎn)是格式不透明想改數(shù)據(jù)得用專門的工具。所以我的建議很明確生產(chǎn)環(huán)境用MMDB數(shù)據(jù)加工階段用CSV。具體做法是拿CSV做清洗和合并然后用官方工具轉(zhuǎn)成MMDB部署的時(shí)候只帶MMDB文件。2.3 查詢服務(wù)的三種實(shí)現(xiàn)路線庫(kù)選好了接下來(lái)是怎么對(duì)外提供服務(wù)。我總結(jié)下來(lái)有三條路線各有適用場(chǎng)景。第一條是嵌入式直接把MMDB解析庫(kù)編譯進(jìn)你的業(yè)務(wù)代碼里。比如Go語(yǔ)言用oschwald/maxminddb-golangPython用maxminddbJava用com.maxmind.db。這種方式?jīng)]有網(wǎng)絡(luò)開銷性能最好但缺點(diǎn)是每個(gè)業(yè)務(wù)服務(wù)都要帶一份庫(kù)文件更新的時(shí)候得挨個(gè)重啟。第二條是本地HTTP服務(wù)單獨(dú)起一個(gè)進(jìn)程加載MMDB對(duì)外暴露REST接口業(yè)務(wù)方通過(guò)127.0.0.1調(diào)用。這種方式解耦做得好庫(kù)更新只需要重啟這一個(gè)服務(wù)業(yè)務(wù)方無(wú)感知。代價(jià)是多了一次本地網(wǎng)絡(luò)往返大概增加幾十微秒。第三條是Unix Domain Socket比HTTP更輕量省掉了TCP握手和HTTP頭解析的開銷。適合對(duì)延遲極度敏感的場(chǎng)景但調(diào)試起來(lái)沒有HTTP方便curl都不好直接用。我個(gè)人的選擇是中小規(guī)模用嵌入式大規(guī)模用本地HTTP服務(wù)。嵌入式適合查詢量不大、服務(wù)數(shù)量少的場(chǎng)景本地HTTP服務(wù)適合微服務(wù)架構(gòu)一個(gè)查詢服務(wù)給幾十個(gè)業(yè)務(wù)方用維護(hù)成本最低。2.4 為什么是Linux這個(gè)標(biāo)題里專門點(diǎn)了Linux不是沒有道理的。IP查詢服務(wù)對(duì)系統(tǒng)資源的要求很特殊內(nèi)存要夠大MMDB全量加載CPU不用太強(qiáng)查詢是輕量計(jì)算網(wǎng)絡(luò)IO要低延遲本地調(diào)用。Linux在這三點(diǎn)上都有天然優(yōu)勢(shì)。具體來(lái)說(shuō)Linux的mmap系統(tǒng)調(diào)用可以把MMDB文件直接映射到內(nèi)存多個(gè)進(jìn)程共享同一份物理內(nèi)存不用每個(gè)進(jìn)程都拷貝一份。文件更新的時(shí)候只要原子替換文件再重新mmap就能做到熱更新。這些特性在Windows上要么沒有要么用起來(lái)很別扭。另外Linux的systemd管理服務(wù)、cgroup限制資源、perf做性能分析這一整套工具鏈對(duì)運(yùn)維非常友好。我試過(guò)在Windows Server上部署類似的服務(wù)光是處理文件鎖和內(nèi)存映射就折騰了半天最后還是換回Linux。3. 環(huán)境準(zhǔn)備與IP庫(kù)處理實(shí)操3.1 服務(wù)器配置與系統(tǒng)調(diào)優(yōu)先說(shuō)說(shuō)機(jī)器怎么選。MMDB文件的大小取決于IP庫(kù)的精細(xì)程度城市級(jí)庫(kù)大概幾十MB如果帶經(jīng)緯度、ISP、ASN信息可能到一百多MB。全量加載到內(nèi)存加上服務(wù)本身的開銷2GB內(nèi)存是起步4GB比較從容。CPU方面查詢是純計(jì)算2核足夠撐起每秒幾萬(wàn)次的查詢。磁盤用普通的SSD就行因?yàn)椴樵冏邇?nèi)存磁盤只在加載和更新的時(shí)候用。系統(tǒng)層面有幾個(gè)參數(shù)建議調(diào)一下。首先是文件描述符限制HTTP服務(wù)并發(fā)高的時(shí)候默認(rèn)的1024可能不夠# 查看當(dāng)前限制 ulimit -n # 臨時(shí)調(diào)整 ulimit -n 65535 # 永久調(diào)整編輯 /etc/security/limits.conf * soft nofile 65535 * hard nofile 65535然后是vm.swappiness這個(gè)參數(shù)控制內(nèi)存換出到磁盤的傾向。IP查詢服務(wù)希望MMDB常駐內(nèi)存所以建議調(diào)低# 查看當(dāng)前值 cat /proc/sys/vm/swappiness # 臨時(shí)設(shè)為10 sysctl vm.swappiness10 # 永久生效寫入 /etc/sysctl.conf vm.swappiness10注意不要設(shè)成0。設(shè)成0在內(nèi)存緊張的時(shí)候可能觸發(fā)OOM Killer把服務(wù)殺掉。設(shè)成10是個(gè)比較穩(wěn)妥的折中。3.2 IP庫(kù)的獲取與格式轉(zhuǎn)換IP庫(kù)的數(shù)據(jù)來(lái)源開源社區(qū)有幾個(gè)選擇。最常用的是MaxMind的GeoLite2免費(fèi)版提供國(guó)家、城市、ASN三個(gè)維度的數(shù)據(jù)精度對(duì)大部分場(chǎng)景夠用。下載下來(lái)是.mmdb格式可以直接用。如果你需要更細(xì)的街道級(jí)數(shù)據(jù)那就得考慮商業(yè)庫(kù)了這里不展開。拿到MMDB之后建議先做個(gè)校驗(yàn)確認(rèn)文件完整、能正常解析。用官方提供的mmdblookup工具# 安裝工具 apt-get install mmdb-bin # 查詢一個(gè)IP試試 mmdblookup --file GeoLite2-City.mmdb --ip 8.8.8.8如果輸出了一堆嵌套的JSON結(jié)構(gòu)說(shuō)明文件沒問題。接下來(lái)是數(shù)據(jù)加工。開源庫(kù)有時(shí)候會(huì)有網(wǎng)段重疊或者缺失的情況如果你對(duì)精度要求高可以拿CSV版本做一次合并清洗。思路是把所有網(wǎng)段按起始IP排序然后逐個(gè)合并相鄰或重疊的段最后用mmdbwriter工具重新生成MMDB。# 偽代碼示意實(shí)際用Python或Go寫 # 1. 讀取CSV解析成 (start_ip, end_ip, country, city) 的列表 # 2. 按start_ip排序 # 3. 遍歷合并如果當(dāng)前段的start 上一段的end 1就合并 # 4. 輸出清洗后的CSV # 5. 用mmdbwriter轉(zhuǎn)成MMDB這一步不是必須的但做過(guò)之后查詢準(zhǔn)確率會(huì)有肉眼可見的提升尤其是那些跨國(guó)企業(yè)內(nèi)網(wǎng)或者云服務(wù)商的IP段。3.3 目錄規(guī)劃與文件權(quán)限部署之前先把目錄結(jié)構(gòu)定好后面維護(hù)起來(lái)省心。我習(xí)慣這樣規(guī)劃/opt/ipdb/ ├── bin/ # 可執(zhí)行文件 ├── data/ # MMDB文件 │ ├── current/ # 當(dāng)前使用的庫(kù) │ └── backup/ # 歷史版本備份 ├── conf/ # 配置文件 ├── logs/ # 日志 └── scripts/ # 更新腳本權(quán)限方面MMDB文件建議設(shè)為640屬主是服務(wù)運(yùn)行用戶屬組是運(yùn)維組。這樣既能保證服務(wù)讀取又不會(huì)讓其他用戶隨便看到數(shù)據(jù)。服務(wù)進(jìn)程用獨(dú)立的低權(quán)限用戶跑別用root# 創(chuàng)建專用用戶 useradd -r -s /sbin/nologin ipdb # 設(shè)置目錄權(quán)限 chown -R ipdb:ipdb /opt/ipdb chmod 750 /opt/ipdb chmod 640 /opt/ipdb/data/current/*.mmdb提示如果你的服務(wù)器上有多個(gè)業(yè)務(wù)方需要查詢不要給他們直接讀MMDB的權(quán)限而是通過(guò)HTTP服務(wù)統(tǒng)一出口。這樣既能控制訪問又方便做審計(jì)。4. 查詢服務(wù)的實(shí)現(xiàn)與部署4.1 用Go寫一個(gè)高性能查詢服務(wù)Go語(yǔ)言是我做這類服務(wù)的首選編譯出來(lái)是靜態(tài)二進(jìn)制部署的時(shí)候拷貝一個(gè)文件就行沒有依賴問題。下面是一個(gè)完整的HTTP查詢服務(wù)示例核心邏輯就是加載MMDB然后對(duì)外提供/lookup接口。package main import ( encoding/json flag log net net/http github.com/oschwald/maxminddb-golang ) var db *maxminddb.Reader type Record struct { Country struct { ISOCode string maxminddb:iso_code } maxminddb:country City struct { Names map[string]string maxminddb:names } maxminddb:city } func lookupHandler(w http.ResponseWriter, r *http.Request) { ipStr : r.URL.Query().Get(ip) if ipStr { http.Error(w, missing ip, http.StatusBadRequest) return } ip : net.ParseIP(ipStr) if ip nil { http.Error(w, invalid ip, http.StatusBadRequest) return } var rec Record err : db.Lookup(ip, rec) if err ! nil { http.Error(w, lookup failed, http.StatusInternalServerError) return } w.Header().Set(Content-Type, application/json) json.NewEncoder(w).Encode(rec) } func main() { dbPath : flag.String(db, /opt/ipdb/data/current/GeoLite2-City.mmdb, path to mmdb) addr : flag.String(addr, 127.0.0.1:8080, listen address) flag.Parse() var err error db, err maxminddb.Open(*dbPath) if err ! nil { log.Fatalf(open db failed: %v, err) } defer db.Close() http.HandleFunc(/lookup, lookupHandler) log.Printf(listening on %s, *addr) log.Fatal(http.ListenAndServe(*addr, nil)) }編譯命令很簡(jiǎn)單go mod init ipdb-service go get github.com/oschwald/maxminddb-golang go build -o /opt/ipdb/bin/ipdb-service main.go這個(gè)服務(wù)監(jiān)聽在127.0.0.1:8080只允許本機(jī)訪問。業(yè)務(wù)方通過(guò)http://127.0.0.1:8080/lookup?ip8.8.8.8就能拿到歸屬地。實(shí)測(cè)下來(lái)單次查詢?cè)?0微秒左右QPS輕松過(guò)萬(wàn)。4.2 用systemd托管服務(wù)手動(dòng)跑進(jìn)程不是長(zhǎng)久之計(jì)用systemd托管才能做到開機(jī)自啟、崩潰重啟、日志歸集。寫一個(gè)unit文件[Unit] DescriptionIP Lookup Service Afternetwork.target [Service] Typesimple Useripdb Groupipdb ExecStart/opt/ipdb/bin/ipdb-service -db /opt/ipdb/data/current/GeoLite2-City.mmdb -addr 127.0.0.1:8080 Restartalways RestartSec3 LimitNOFILE65535 # 安全加固 NoNewPrivilegestrue PrivateTmptrue ProtectSystemstrict ReadOnlyPaths/opt/ipdb/data [Install] WantedBymulti-user.target保存到/etc/systemd/system/ipdb.service然后systemctl daemon-reload systemctl enable ipdb systemctl start ipdb systemctl status ipdbRestartalways保證進(jìn)程掛了自動(dòng)拉起來(lái)ProtectSystemstrict把文件系統(tǒng)設(shè)為只讀只有/opt/ipdb/data可讀這樣即使服務(wù)被攻破攻擊者也改不了系統(tǒng)文件。4.3 庫(kù)更新的熱加載方案IP庫(kù)不是一成不變的每個(gè)月都有新的網(wǎng)段分配和變更。更新的時(shí)候不能停服務(wù)得做熱加載。思路是新庫(kù)下載到臨時(shí)目錄校驗(yàn)通過(guò)后原子替換current目錄下的文件然后給服務(wù)發(fā)個(gè)信號(hào)讓它重新打開文件。Go服務(wù)這邊加一個(gè)信號(hào)處理import ( os os/signal syscall ) func main() { // ... 前面的代碼 sigCh : make(chan os.Signal, 1) signal.Notify(sigCh, syscall.SIGHUP) go func() { for range sigCh { newDB, err : maxminddb.Open(*dbPath) if err ! nil { log.Printf(reload failed: %v, err) continue } oldDB : db db newDB oldDB.Close() log.Println(db reloaded) } }() // ... 啟動(dòng)HTTP服務(wù) }更新腳本大概長(zhǎng)這樣#!/bin/bash set -e NEW_DB/tmp/GeoLite2-City.mmdb CURRENT/opt/ipdb/data/current/GeoLite2-City.mmdb BACKUP/opt/ipdb/data/backup/GeoLite2-City-$(date %Y%m%d).mmdb # 下載新庫(kù)這里用wget示意實(shí)際按你的源來(lái) wget -O $NEW_DB https://example.com/GeoLite2-City.mmdb # 校驗(yàn) mmdblookup --file $NEW_DB --ip 8.8.8.8 /dev/null # 備份舊庫(kù) cp $CURRENT $BACKUP # 原子替換 mv $NEW_DB $CURRENT chown ipdb:ipdb $CURRENT chmod 640 $CURRENT # 通知服務(wù)重載 systemctl reload ipdb注意mv在同一文件系統(tǒng)內(nèi)是原子操作所以/tmp和/opt如果在不同分區(qū)要先cp再mv否則替換過(guò)程中可能出現(xiàn)文件不完整的情況。5. 性能壓測(cè)與調(diào)優(yōu)實(shí)錄5.1 壓測(cè)工具與基準(zhǔn)數(shù)據(jù)服務(wù)跑起來(lái)之后得知道它能扛多少。壓測(cè)工具我用wrk比ab更輕量支持多線程。先裝一下apt-get install wrk然后寫個(gè)壓測(cè)腳本隨機(jī)生成IP去查# 生成測(cè)試IP列表 for i in $(seq 1 10000); do echo 8.8.$((RANDOM % 256)).$((RANDOM % 256)) done /tmp/ips.txt # 用wrk壓測(cè)需要配合lua腳本讀取IP wrk -t4 -c100 -d30s --latency -s lookup.lua http://127.0.0.1:8080lookup.lua的內(nèi)容local ips {} for line in io.lines(/tmp/ips.txt) do table.insert(ips, line) end request function() local ip ips[math.random(#ips)] return wrk.format(GET, /lookup?ip .. ip) end我實(shí)測(cè)的數(shù)據(jù)2核4G的機(jī)器100并發(fā)下QPS穩(wěn)定在35000左右P99延遲不到1毫秒。這個(gè)性能對(duì)絕大多數(shù)業(yè)務(wù)來(lái)說(shuō)都綽綽有余了。5.2 瓶頸定位與優(yōu)化手段如果壓測(cè)數(shù)據(jù)不理想先別急著加機(jī)器按下面的順序排查。第一看CPU。用top -H看是不是某個(gè)核跑滿了。如果是說(shuō)明查詢邏輯本身有優(yōu)化空間。MMDB查詢是純內(nèi)存操作理論上不應(yīng)該成為瓶頸。檢查一下是不是每次查詢都重新解析了IP字符串這個(gè)可以提前緩存。第二看內(nèi)存。用free -h看MMDB有沒有被換出。如果swap使用量在漲說(shuō)明vm.swappiness沒調(diào)好或者內(nèi)存真的不夠。MMDB文件多大常駐內(nèi)存就至少多大。第三看網(wǎng)絡(luò)。雖然走的是回環(huán)但HTTP協(xié)議本身有開銷。如果QPS上不去可以試試換成Unix Domain Socket能省掉TCP握手和HTTP頭解析大概能提升20%到30%的吞吐。第四看文件描述符。ss -s看連接數(shù)如果接近ulimit -n就得往上調(diào)。提示壓測(cè)的時(shí)候別用127.0.0.1以外的地址否則測(cè)出來(lái)的是網(wǎng)卡性能不是服務(wù)性能。另外壓測(cè)機(jī)和被測(cè)服務(wù)別放同一臺(tái)機(jī)器會(huì)互相搶CPU。5.3 高可用與橫向擴(kuò)展單機(jī)服務(wù)總有掛的時(shí)候生產(chǎn)環(huán)境得考慮高可用。最簡(jiǎn)單的方案是雙機(jī)熱備兩臺(tái)機(jī)器都跑查詢服務(wù)前面掛一個(gè)本地的負(fù)載均衡比如nginx或者h(yuǎn)aproxy。業(yè)務(wù)方調(diào)127.0.0.1:80由負(fù)載均衡轉(zhuǎn)發(fā)到兩個(gè)后端。upstream ipdb { server 127.0.0.1:8080; server 127.0.0.1:8081; keepalive 64; } server { listen 127.0.0.1:80; location /lookup { proxy_pass http://ipdb; proxy_http_version 1.1; proxy_set_header Connection ; } }如果查詢量特別大單機(jī)扛不住那就得分片。按IP的第一段做哈希比如1.x.x.x走機(jī)器A2.x.x.x走機(jī)器B業(yè)務(wù)方根據(jù)IP自己路由。這種方式?jīng)]有中心節(jié)點(diǎn)擴(kuò)展性最好但業(yè)務(wù)方要改代碼。還有一種偷懶的做法是多進(jìn)程。Go服務(wù)本身是單進(jìn)程的但你可以起多個(gè)實(shí)例監(jiān)聽不同端口然后用SO_REUSEPORT讓內(nèi)核做負(fù)載均衡。Linux 3.9以上支持這個(gè)特性配置起來(lái)也簡(jiǎn)單import golang.org/x/sys/unix lc : net.ListenConfig{ Control: func(network, address string, c syscall.RawConn) error { return c.Control(func(fd uintptr) { unix.SetsockoptInt(int(fd), unix.SOL_SOCKET, unix.SO_REUSEPORT, 1) }) }, } ln, _ : lc.Listen(context.Background(), tcp, 127.0.0.1:8080)這樣起4個(gè)進(jìn)程監(jiān)聽同一個(gè)端口內(nèi)核會(huì)自動(dòng)把連接分給不同的進(jìn)程充分利用多核。6. 常見問題與排查技巧6.1 查詢結(jié)果不準(zhǔn)怎么辦這是被問得最多的問題。IP歸屬地查詢本身就不是100%準(zhǔn)確的原因有幾個(gè)一是IP庫(kù)更新有延遲新分配的網(wǎng)段可能還沒收錄二是運(yùn)營(yíng)商動(dòng)態(tài)分配IP同一個(gè)IP在不同時(shí)間可能屬于不同地區(qū)三是企業(yè)專線和云服務(wù)商的IP注冊(cè)地和實(shí)際使用地經(jīng)常對(duì)不上。排查思路是這樣的先確認(rèn)你用的庫(kù)是不是最新的mmdblookup查一下這個(gè)IP在庫(kù)里有沒有記錄。如果沒有記錄那就是庫(kù)沒覆蓋到等更新或者換更全的庫(kù)。如果有記錄但結(jié)果不對(duì)那就是數(shù)據(jù)源本身的問題換商業(yè)庫(kù)可能能解決但也不保證100%。提示對(duì)于風(fēng)控場(chǎng)景別把IP歸屬地當(dāng)成唯一判斷依據(jù)。它只是一個(gè)弱信號(hào)要結(jié)合設(shè)備指紋、行為特征一起看。我見過(guò)太多因?yàn)镮P庫(kù)不準(zhǔn)導(dǎo)致誤殺的案例了。6.2 服務(wù)啟動(dòng)報(bào)錯(cuò)排查表報(bào)錯(cuò)信息可能原因解決方法open db failed: no such file路徑寫錯(cuò)或文件不存在檢查-db參數(shù)確認(rèn)文件在/opt/ipdb/data/current/下permission denied服務(wù)用戶沒有讀權(quán)限chown ipdb:ipdb并chmod 640address already in use端口被占用ss -tlnptoo many open files文件描述符不夠調(diào)大LimitNOFILE重啟服務(wù)lookup failed: invalid databaseMMDB文件損壞重新下載用mmdblookup校驗(yàn)6.3 內(nèi)存占用異常增長(zhǎng)正常情況下MMDB加載后內(nèi)存占用是穩(wěn)定的不會(huì)持續(xù)增長(zhǎng)。如果發(fā)現(xiàn)內(nèi)存一直漲大概率是內(nèi)存泄漏。Go服務(wù)雖然自帶GC但如果代碼里不斷創(chuàng)建大對(duì)象又不釋放也會(huì)出問題。排查方法是用pprofimport _ net/http/pprof // 在main里加 go func() { log.Println(http.ListenAndServe(127.0.0.1:6060, nil)) }()然后go tool pprof http://127.0.0.1:6060/debug/pprof/heap進(jìn)去之后用top命令看哪個(gè)函數(shù)占內(nèi)存最多。我遇到過(guò)一種情況是每次查詢都json.Marshal一個(gè)大的結(jié)構(gòu)體導(dǎo)致大量臨時(shí)對(duì)象。解決辦法是復(fù)用bytes.Buffer或者直接用json.Encoder寫到ResponseWriter。6.4 更新庫(kù)之后服務(wù)沒生效這個(gè)坑我踩過(guò)。更新腳本里mv替換了文件systemctl reload也發(fā)了信號(hào)但查詢結(jié)果還是舊的。原因有兩個(gè)一是systemd的reload默認(rèn)發(fā)的是SIGTERM不是SIGHUP需要在unit文件里指定[Service] ExecReload/bin/kill -HUP $MAINPID二是Go服務(wù)里db變量是全局的信號(hào)處理協(xié)程里改了db但HTTP處理函數(shù)讀的可能是舊的引用。解決辦法是用atomic.Value包一層var db atomic.Value // 加載 db.Store(newDB) // 查詢 reader : db.Load().(*maxminddb.Reader) reader.Lookup(ip, rec)這樣就能保證讀寫安全更新立即生效。6.5 日志太多把磁盤寫滿查詢服務(wù)如果每個(gè)請(qǐng)求都打日志一天下來(lái)幾個(gè)GB就沒了。生產(chǎn)環(huán)境建議只記錄錯(cuò)誤日志正常查詢不打。如果確實(shí)需要審計(jì)可以采樣記錄比如每1000次記一條。用logrotate做日志切割/opt/ipdb/logs/*.log { daily rotate 7 compress missingok notifempty copytruncate }copytruncate很重要因?yàn)镚o服務(wù)可能一直持有文件句柄直接mv會(huì)導(dǎo)致日志寫到舊文件里。7. 幾個(gè)容易被忽略的細(xì)節(jié)7.1 IPv6的支持現(xiàn)在IPv6越來(lái)越普及查詢服務(wù)必須支持。MMDB格式本身是支持IPv6的maxminddb-golang也能直接查。但要注意IPv6的查詢樹深度是128比IPv4的32深單次查詢會(huì)稍微慢一點(diǎn)不過(guò)還是在微秒級(jí)。如果你的業(yè)務(wù)暫時(shí)只處理IPv4可以在入口處把IPv6地址轉(zhuǎn)成IPv4映射地址但這不是長(zhǎng)久之計(jì)。建議直接支持反正代碼上沒什么額外成本。7.2 內(nèi)網(wǎng)IP的處理MMDB庫(kù)里通常不包含內(nèi)網(wǎng)網(wǎng)段10.0.0.0/8、172.16.0.0/12、192.168.0.0/16查詢這些IP會(huì)返回空。業(yè)務(wù)方拿到空結(jié)果可能會(huì)報(bào)錯(cuò)。解決辦法是在查詢服務(wù)里加一層判斷遇到內(nèi)網(wǎng)IP直接返回一個(gè)固定的標(biāo)記if ip.IsPrivate() { json.NewEncoder(w).Encode(map[string]string{type: private}) return }這樣業(yè)務(wù)方就能區(qū)分“查不到”和“內(nèi)網(wǎng)IP”兩種情況。7.3 時(shí)區(qū)與編碼問題城市名稱在MMDB里是多語(yǔ)言的names字段是個(gè)map鍵是語(yǔ)言代碼。默認(rèn)可能返回英文如果你需要中文得在查詢的時(shí)候指定type Record struct { City struct { Names map[string]string maxminddb:names } maxminddb:city } // 取中文 cityName : rec.City.Names[zh-CN] if cityName { cityName rec.City.Names[en] }注意不是所有城市都有中文翻譯取不到的時(shí)候要有個(gè)兜底。7.4 監(jiān)控指標(biāo)怎么埋生產(chǎn)服務(wù)沒有監(jiān)控就是裸奔。至少埋這幾個(gè)指標(biāo)QPS、P99延遲、錯(cuò)誤率、MMDB加載時(shí)間。用Prometheus的話加一個(gè)/metrics接口import github.com/prometheus/client_golang/prometheus/promhttp http.Handle(/metrics, promhttp.Handler())然后在查詢函數(shù)里打點(diǎn)var ( queryCount prometheus.NewCounter(prometheus.CounterOpts{ Name: ipdb_query_total, Help: Total queries, }) queryDuration prometheus.NewHistogram(prometheus.HistogramOpts{ Name: ipdb_query_duration_seconds, Buckets: []float64{0.0001, 0.0005, 0.001, 0.005, 0.01}, }) ) func init() { prometheus.MustRegister(queryCount, queryDuration) }這樣在Grafana上就能看到實(shí)時(shí)的查詢量和延遲分布出問題的時(shí)候一眼就能定位。7.5 庫(kù)更新的自動(dòng)化手動(dòng)更新庫(kù)容易忘建議做成定時(shí)任務(wù)。用cron每天凌晨跑一次更新腳本# 編輯 crontab crontab -e # 每天凌晨3點(diǎn)更新 0 3 * * * /opt/ipdb/scripts/update.sh /opt/ipdb/logs/update.log 21更新腳本里加上失敗重試和告警。如果連續(xù)三天更新失敗發(fā)個(gè)郵件或者釘釘通知。別等到庫(kù)過(guò)期半年了才發(fā)現(xiàn)。8. 寫在最后的一些個(gè)人體會(huì)這套方案我在三個(gè)項(xiàng)目里落地過(guò)最大的感受是私有化部署的門檻比想象中低但維護(hù)的細(xì)節(jié)比想象中多。裝個(gè)服務(wù)、跑個(gè)查詢半天就能搞定但要讓它穩(wěn)定跑一年不出問題得在監(jiān)控、更新、容災(zāi)上花不少心思。如果讓我給剛上手的朋友一個(gè)建議那就是先把單機(jī)跑通再考慮高可用。很多人一上來(lái)就搞集群、搞分片結(jié)果基礎(chǔ)服務(wù)都沒調(diào)穩(wěn)出了問題排查半天。先用一臺(tái)機(jī)器把查詢服務(wù)跑起來(lái)壓測(cè)看看性能確認(rèn)能滿足業(yè)務(wù)需求然后再逐步加監(jiān)控、加備份、加負(fù)載均衡。還有一個(gè)心得是別過(guò)度設(shè)計(jì)。IP查詢本身是個(gè)很簡(jiǎn)單的需求MMDB加一個(gè)HTTP服務(wù)就夠了。我見過(guò)有人用Elasticsearch存IP段做范圍查詢性能差不說(shuō)維護(hù)成本還高。工具選型要匹配需求殺雞別用牛刀。最后說(shuō)個(gè)實(shí)際的數(shù)據(jù)我這套方案在2核4G的機(jī)器上支撐了日均800萬(wàn)次查詢P99延遲0.8毫秒運(yùn)行半年零故障。成本是一年幾百塊的服務(wù)器費(fèi)用相比商業(yè)API省了90%以上。如果你也在為IP查詢的成本和合規(guī)發(fā)愁不妨試試這條路。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
国产白丝精品在线观看| av亚欧| 黄色视频特级毛片| 国产高清无码一区三区二区| 亚洲精品99999| 骚人妻少妇视频| 美腿色图| www.婷婷六月天| 精品人妻一区二区视频| 国产精品96久久久久久| 91色欧美| 国产风韵犹存熟妇三区| 麻豆婷婷成人一二三| 日韩中文字幕二区| 欧美日韩一区二区三区四区蜜桃| 亚洲激情在线观看一区| 老司机天天操| 亚洲日本激情| 人妻献身系列第54部| 中文字幕后石码四区五区| 综合97久久| 加勒比伊人影院| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 久久人妻无码毛片A片麻豆| 97国产精选| 啊啊啊啊啊啊啊国| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 激情综合网五月婷婷| 精品中文字幕第一页| 黑人免费福利视频| 蜜臀99精品国产高清在线观看| 欧美少妇色综合| 亚州色站 日韩电影| 91jk色拍| 久久久亚洲精品电影免费看| 日本不卡五区| 成人久久久| 91免费看中出视频| 国内一级精品| 精品国产一区二区三区久久久蜜臀| 婷婷五月天激情网| 中文字幕色AV| 国产精品美女视频诱惑| 欧美亚洲中文| 黄色免费网| 豆花视频操逼网址| 国产精品熟女丝袜一区二区| 乱老女人一区二区视频| 人妻熟女一区二区三区在线| 久久国产精品视频| 国产一级舔足在线观看| 免费中文在线| 少妇蜜汁| 天天躁狠狠躁av| 国产精品乱码久久久、久久| 女优大全 - 91n| 亚洲精品久久久久毛片A片拉屎| 国产精品午夜福利| 日韩有码免费视频| 大香蕉专区| 浪人综合网| 日韩中文字幕在线视频观看| 欧美.亚洲.另类.丝袜.制服.诱惑| 久久久9品一区二区三区| 人妻大相焦在线| 蜜桃臀一区二区三区久久| 大香蕉中文201| 狠狠超| 夜夜操美女| 久久久久亚洲Aⅴ无码| 再深点灬舒服灬太大了好硬好爽| 亭亭丁香激情| 天天操熟妇| 亚洲精品九九九| 国产女同视频在线播放| 亚洲AV人人澡人人爱| 99少妇| AV一起草在线| 按摩中文字幕| 四虎免费在线播放| 精品久久久久久中文| 99九九精品| 日韩传媒在线| 内射小黄片| 3p国产色噜噜一区| 九九拍拍精品视频在线播放 | 深爱伊人影院| A片三级无码| 四季AV综合网址| 久久久精品九| 全免费a敌肛交毛片免费| 亚洲天天艹| 日韩无码服务区| 久久黄片国产一区二区| 婷婷伊人一区| 神马麻豆福利院| 成人八戒网站| 激情综合av| 久久久久久九九九| 曰韩av中文字幕专区| 人妻天天爽夜夜爽精品2| 亚洲影视第一页| 国产女人和拘做爰视频| 一区二三区四区视频大全套| 欧美少妇性爱网站| 四虎在线免费视频| 操操操日本的逼| 欧美色图片91| 日本操逼视频不卡直接放| 人妻丝袜无 码视频专区| 亚洲综合射| 日韩成人性日韩成人性爱视频在线免费观看 | 青青草视频这里只有精品| 91青青在线视频| 老熟女搡BBBB搡BBBB视频| 久久久精品日本一道| 九九热精品视频六| 99精品久久| 亚洲图片视频小说| 亚洲成人免费电影| 一级性爱视频免费在线| 久插综合| 激情九月婷婷| 亚洲国产97| 97视频网站在线观看| 久久9精品| 九九久久综合| 美女诱惑一区| ai欧美亚洲小说| 亚瑟国产精品久久无码| 欧美日韩青操| 超碰人人草| 美女黄页网站| 超碰97男人| 伊人久久综合影院| 免费国产| 欧美美女在线高潮999| 欧美在线播放| 男人精品天堂一区| 99国产精品人妻人伦| 欧美性爱日韩高清| 日韩特一级久久| 桃花色涩综合影院| 99婷婷一区二区| 久久动漫精品视频这里只有精品| 欧美一区二区亚洲天堂| 精品视频在线观看| 日韩精品操少妇| 日韩精品人妻一| 中日韩久久久免费看| 大香蕉啪啪网| 日韩操逼HD| 色综合1991| 最新欧洲欧美日本激情网站| 91被操| 97热视频在线观看| 97中文超碰| 10000部十八禁看电影| 韩日性爱av| 精品高清牛人盗摄一区二区三区中文字幕A片免费在线观看 | 天天日少妇逼AV| 婷婷色综合欧美日韩| 欧亚第一综合网| 91三级理论片播放器| 亚洲在线欧美| 狠狠干91| 久热精品在线| 男人天堂无码| 日韩在线人妻网站| 欧美色婷婷| 人妻干天天| 超碰九九| 蜜臀视频网站| 麻豆一区二区三区在线看 | 美国精品国产精品| 欧美高清18A片| 天美传媒精品久久视频| 91老熟女老女人国产老太| 午夜天堂精品久久久久91| 思思热久久成人| 91精品人妻一品二品三品| 超碰天天操你比| 大香蕉十区| 激情色播| 日韩乱插| 久久久久久精品免费看A级| 精品国产一区探花在线观看| 国产精品丝袜在线| 欧美色亚洲色| 97操碰| 超碰综合97在线| 色眯眯射| 九九av| 啊好大好舒服| 色姑娘综合网| 99少妇内射| 怡红院网站在线视频| 韩国三级三级BD在线| 伊人天堂在线| 亚洲欧美天堂在线| 爆乳免费黄网站| 天天做天天爽| 床上啊啊啊一区二区三区| 懂色AV蜜臀无码精品APP | 天天影视色香色欲| 69人妻精品一区二区绯色| 国内精品久久久久影院亚洲| 狠狠激情综合狠狠操中文字幕| 黄色区免费观看中文字幕| 欧美福利视频啊啊啊啊| 精品免费视频国产一区| 国产精品不卡av免费在线观看| 欧美翘臀视频网站一区二区三区| 日本色日夜干| 思思热免费在线视频| 精品国产三级av韩国在线| 69一区二区三区 | 亚洲黑丝在线| 97精品一二区| 色婷婷婷五月天激情四射| 亚洲情色一区综合| 97超视频在线观看| 久久 久久国内精品亚洲| 91美女視頻| 素人伊尹大香蕉免费下载视频| 另类欧美| 91丝袜| 国产乱伦视频污| 国产对白刺激视频| 白嫩国模丰满一二三区| 色综合色色| 91大神电影天堂| 999综合色| 中文欧丝袜诱惑| 人妻熟女一区二区三区视频| 人人操人人摸人人骑| 91精品亚洲内射孕妇| 人人玩人人添人人澡免费| 青娱乐亚洲自拍| 国产一级αv免费看片| 日韩人妻精品久久久久| 亚洲美女 晚间男人天堂| 91精品国产长腿丝袜美女| 99热在线播放| 精品久久久久av影院| 最新国产亚洲精品精品国产亚洲综合| 色婷婷激情| 操一区| 日逼97| 国产黄片精品在线| 亚射在线| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 中文字幕精品一区二区精品| 啊啊啊不要啊啊受不了了视频在线| 视频在线中文字幕| 无码人妻一区二区三区色欲aⅴ| 中文字幕精品资源在线| 午夜成人福利影视| 日韩欧美中文字幕搭讪巨乳美人妻视频| 日本操逼无码| 蜜桃久久一区二区三区| 91麻豆天美国产欧美高潮| 久久欲| 99免费在线视频| 精品中文日韩字幕视频| 婷婷色综合欧美日韩| 久久精品亚洲成a人天堂| 国产久久日韩网站导航| 色噜噜狠狠色综无码久久合欧美| 强免费黄色网址| 熟妇艹鸡八| 97av在线观看| 天天肏美女| 日本在线999| 日本欧美一区二区三区免费| 加勒比人妻综合| 人人摸人人入| 久无码| 亚洲激情视频| 欧亚综合一卡二卡中文字幕| 日本在线999| 日韩乱伦视频| JuliaAnn丝袜熟女系列| 国内精品伊人久久久久影院会| 欧美亚洲厕所精品偷拍91| 日韩性爱长视频免费| 激情五月综合| 白丝一区| 肉丝网站91| 欧美色图20p| 9久综合网| 人妻91少妇| 人妻久久久| 1024精品在线| 污啪啪啪视频| 天天92av| 色综合加勒比四四季| 操逼无码操逼| 日本最新免费韩国1区2区视频播放| 中字幕人妻一区二区三区| 色 婷97| 日韩成人性日韩成人性爱视频在线免费观看| 大香蕉久| 久久久久久久性爱| 人妻天天爽夜夜爽精品2| 综合另类| 粉嫩AV一区夜夜嗨| 日韩乱伦视频| 久久精品国产亚洲5555| 久久综合女优| 日美免费黄片| 91久久婷婷| 大香蕉免| 青青伊人这里只有精品| 久久久天堂| 性欧美另类高清| 视频国产欧美在线播放| 试看福利| 亚洲色五月| 一级做受视频免费是看美女| 国产精品电| 婷婷色婷婷| www.99色| 国产精品久久久午夜夜伦鲁鲁| 九色PORNY9l原创自拍| 亚洲精品久久久久毛片A片拉屎 | 91痴汉| 欧美在线官网| 亚欧无码在线| 亚洲图片另类| 男人天堂毛片| 天天综合网AV91| 亚洲一区二区三区欧美日韩| 日产操逼| 日本三级精品| 婷婷五月天无码| 亚洲高潮少妇| 九九色色| 亚洲综合精品国产一区| 免费αV在线视频| 91热色| 色第一页| 欧美色五月| 黑人狂躁日本妞一区二区三区| 精品久操| 男人天堂 天天射| 欧州色图区| 91呆哥人妻| 啪啪啪精品| 久久大香蕉97| 青青青艹在线视频| AV一二区| 最新欧美色网| 男人天堂2019亚洲| 国产欧美日韩在线不卡第一页| 中国一级αV| 久久成人东京热人妻| 久久精品国产99国产精品亚洲| 国产亚洲综合欧美一区| 丝袜美腿制服人妻二区中文字幕| 中文字幕日韩人妻视频| 国产真实子伦对白| 精品91日日夜夜超清资源| 成人情色综合网| 97超碰免费生活| 99re只有精品| 1区2区3区中文字幕日韩| 99精品视频在线观看| 亚洲砖码砖专无区2023| 一起草欧美| 国产精品亚洲色婷婷久久久| 成人精品无码| av影片在线观看不卡| 男人的天堂视频精品乱在线| 夜夜嗨TV| 亚洲色图日韩丝袜制服一区二区五月在线| 热热色色综合| 久久人妻一区二区三区高清| 肉丝中文无码高清| 性高潮久久久| 亚洲少妇综合| 欧美性色欧美| 2017天天插| 高清无码人妻久久久一区二区三区aⅴ| 国产后入式在线观看| 日韩97精| 国产精品9999| 福利视频香蕉免费一区二区在线| 欧美性爱日韩性爱| 丁香五月社区| 情色日播放AV| 二区熟妇韩日| 日韩肏逼视频| 成人无遮挡毛片免费看| 欧美视频第二页| 手机av亚洲丝袜美腿日韩第一页二页| 秋霞怕怕片| 久久亚洲人妻| 亚洲清纯唯美| 97久久超碰亚洲| julia国产在线| 国产综合网站在线播放| BBBBB97COM| 91成人无码| 熟妇综合一区二区三区| 一起草三级AV电影在线观看 | 操淫穴亚洲五月丁香 | 亚洲天天操| 色五月婷婷中文字幕| 三级日韩一区二区三区| 爱爱动态60秒| 国产sv美女内射| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 夜夜天天噜狠狠爱2021| 成人AV素股で擦久久| www鬼畜国产男人的天堂| 啊啊啊好舒服视频| 97这里都是精品| 狠狠婷婷亚洲中文综合久久| 秋霞久久亚洲精品成人| 久久精品国产亚洲粉嫩| 久久精品人人做人人看| 秋霞曰韩R级| 校园春色制服丝袜中文字亚洲| 一区二区久久天天干狠狠| 97在线观看免费视频l| 九九人妻| 夜夜嗨一区二区三区三州加勒比 | 欧美九九九| 欧美v亚洲v综合v国产v妖精| 久久精视频美日韩在线视频| 一区二区三区四区五区高清无码永久视频 | 丁香激情五月天| 久久99999| 超碰美国| 欧美劲爆视频一区二区| 久久e6只有精品| 97久久精品不卡| 国产无码精品成人| 丁香六月婷婷| 夜夜操夜夜高潮夜夜爽国产精品区| 蜜臀久久99精品久久久久久酒店| 欧美日韩国产中文精品字幕自在自线| 亚洲精品蜜桃久久久一区二区三区| 91少妇通奸网站| 美国日韩黄片| 日韩99神马视频播放片在线播放| 欧美亚州综合网图片| 亚洲欧洲精品视频发布| 久久一二三四五六七八九区区| 91欧美网| 免费在线观看国内色片网站网址| 亚洲综合图文| 婷婷伊人五月| 95精品在线| 亚洲无码一区成人免费午夜| 日韩三级天堂在线观看| 性交一区二区在线播放| 午夜超爽| oumeisetupian| 欧美中文综合| 91九久| 精品人妻一区二区三区日产| 久久99综合| 亚洲中文字幕久久无码精品| 一区二区三区视频| 亚州色综合| 丁香五月影院| 久久超碰97| 精品久久久久,69国产成人精| 精品97久久| 丁香五月影院| 日韩欧美亚洲自拍偷拍| 久久综合18p| 国产视频人人网| 超碰97欧美在线| 91操操操操| 欧美97日韩| 日韩精品一区二区高清| 啊啊啊啊啊啊啊啊啊啊在线观看| 久久成人国产| 欧美春色| 伊人天堂在线| 亚洲AV成人无码一二三久久| 天天插夜夜爽| 久综合网| 亚洲国产成人7777| 亚洲图片小说欧洲| BBBBB97COM| 一本色道综合久久欧美日韩精品| 五月丁香婷婷综合| 色97欧美| 日韩一级片在线看| 欧成人精品一区二区三区| 欧美国产日韩清纯唯美| 骚女天天综合网| 日韩素人无码一区二区三区三州| 2023天天操夜夜操| 久久骚| 99只有精品| 欧美自拍偷拍综合图片| 色偷偷男人的天堂麻豆| 丁香五月天堂网| 日产操逼| 激情视频图片| 一区二区三区蜜桃成人撸久久东京热| 午夜精品探花| 女性喷水高潮在线观看| 精人妻无码一区二区三区伊人直播| 立川理惠加勒比无码| 欧美极品| 日本二区不卡| 99操| 亚洲欧美大香蕉| 美国一区二区三区视频| 91五十路| 97资源站国产精品| 干B| 玖玖97综合 | 成人在线视频二区| 亚洲av无线观看| 免费人成毛片乱码| 日韩精品啪啪啪| 精国久久一区二区三区98| 丝袜美腿诱惑亚洲欧美视频在线观看| 在线一道啪| 亚洲中字幕日本一区二区三区| 老色鬼成人精品视频下载大在线观看| 动漫片子网站3黄| 91五月天| 天天爽人人综合免费7799| 美女视频尤物网在线看| 无码人妻精品酒店| 午夜精品久久久久久久久久久久久| 亚洲的天堂网| 成人热久久精品| 狼天天狼天天大香蕉| 国产成人精品日本亚洲语言 | 久久噜| 美女主播色欲91抠b在线播放| 亚洲 综合 欧美| 亚洲aV性爱| 色噜噜精品一区二区三| 亚洲 日本 国产 综合| 免费A片三p视频| 日本506070| 欧美翘臀视频网站一区二区三区| 综合色区偷拍| 高清视频一区| 成人国产二区三区在线,男女精品。| wuyechaopeng| 白嫩白嫩的午夜九久久久久久久久久久久成人剧场 | 五月婷婷丁香| 嗯啊不要啊在线| 九九久久99| 人妻av在线| 免费观看啪视频| 日本女人操逼| 99在线免费观看| 五月天婷婷综合网| 久久a久久| 在线天堂999| caopeng97人妻| 欧美国产视频| 97超碰中文| 亚洲中亚日激情视频| 亚洲亚洲亚洲天堂天堂| 超碰久久.com| 激情文学88| 免费视频在线一区二区不卡| 岛国A V在线免费看| 性暴力欧美猛交在线直播| 精品久久久高清无码| 风流老熟女一区二区三区l| 亚洲AV操| 69人妻精品一区二区绯色| 天天看综合网| 国产精品久久久久久久久久久久久久久久久久| 在线观看午夜婷婷久久久久清性观看| 秋霞免费AV| 五月天久久久| www.欧精品| 亚洲自拍另类丝袜综合| 熟妇高潮精品一区二区三区下载| 少妇熟女视频一区二区三区| 好吊色综合| 四虎国产精品永久在线囯在线| 亚洲无码成人精品| 91|九色|国产熟女| 精品99999久久久久久| 97超碰69| 欧美专利1区2区3区4区5区免费| 九九久久首页| 久久 久久国内精品亚洲 | 亚欧国产无码精品在线| 国产11页| 激情四射婷婷六月天| 精品1区2区3区| 人妻一区二区三区视频 | 91在线一起| 亚洲色图 欧美热图 清纯唯美 另类自拍| 久久亚洲欧美一区二区三区-亚洲国产精品第一区二区 | 欧美97网| 精品人妻中文字幕高清| 久久精品国产亚洲AV高级北京| 天天操夜夜操| 久久精品国产久精国产| 国产97在线视频| 亚洲一区二区中文字幕| juliaann精品熟女一区| 97超碰影音| 亚洲色欲天天天堂色欲网女| 天天爱天天韩国日本牛牛牛牛 | 日韩成人大片一区二区| 中文字日本乱码| 天天天肏屄肏屄肏屄欧美欧美| 成人无遮挡毛片免费看| 99国产人成精品| 九99久久| 国产精品一区av在线| 又黄又爽在线观看视频| 超碰色美女| 口爆吞精在线观看| 99只有精品| 精品久久无码午夜福利| 婷婷色一区| 中文字幕青青草| 国产中文字幕曰本毛片| 青青草国产盗摄一二三区| 91香蕉国产尤物视频| 99无码精品| 亚洲在线综合| 曰韩成人免费视频| 青青草玖玖爱| 一区二区三区探花在线观看| 韩国女主播青草在线| 91在线免费精品视频| 91狠| 啊啊啊啊啊啊好多水| 色婷婷电影| 美女好片色日本| 97色干| 人妻少妇无码| 国产热RE99久久6国产精品首| 色哟哟精品1精品2| 日韩欧美字幕亚洲一区二区| 亚欧美色图| 亚洲AV无码国产成人| 97爱啪| av凤凰久久久| 日韩图色| 亚洲熟妇丝袜在线观看| 蜜乳AV免费观看| 中文字幕97色| 色伊人91| 久久久无码精品人妻二区| 国产精品免费视频不卡| 午夜啊啊| 91美女在线精品视频| 老司机午夜精品视频| 久久亚洲不卡一区二区三区| 91在线秘 男同| 欧美天天综合站| 日韩性爱网址| 亚洲国产熟妇综合色专区| 人妻碰碰碰碰碰碰| 九九精品无码专区免费| 欧美性视频二区三区| 一区二区三区精品视频| 午夜精品久久久久久久久久久久久| 欧美午夜精品久久久久久超碰| 亚洲色综合| AV丝袜东京热| 丁香五月天啪啪| 美国日韩黄片| 国产精品乱码久久久久久久| 久久午夜伦| 欧美性爱免费短视频| 欧美小说区视频区| 色一射色一射| 8050无码八戒| 91处女在线观看| 91激情综合| 翘臀vidoes| 五十路三级片| 亚洲国产综合图区中文字幕| 久久大陆| 日韩性色b| 国产无马视频| 国产操逼网站亚洲一级黄色| 亚洲欧美日韩电影网站一区| 中文字幕精品一区二区精品| 国产精品黄色三级av| 97资源亚洲| 欧美日韩国产人人| 亚洲一区中文字幕久久,果冻传媒一区二区天美传媒 | 伊人久久久日韩一区| 国产久久久久久久久一区二区 | 精品一区二区三区四区外站| 久久久蜜桃一区二区三区| 亚洲国产尤物yw在线观看| 一起草视频在线| 久久精品男人的天堂| 9热9热综合网| 精品久久一区二区三区四区五区| 操逼1区| 日本黄大片在线观看视频| 久久婷婷一区| 天天综合网~91入口| 美腿色图| 国产成人亚洲精品自产在线| 日韩丝袜二区| 6080YYY午夜理论片在线观看| 91综合网站| 91插B网站| 熟女高潮合集-永久久久-成人AV | 97久久国产| 情色大香蕉| 天天干夜夜肏| AV99热18这里只有精品| 久久熟妇五十路一区| 操狠狠| 99视频内射三四| 国产又色又爽又舒服的三级视频| 国产AV毛片| 国产自产自拍| 国产日韩精品人妻久久久久色欲网站| 久久伊人最新网址视频| 91亚洲色图| 久久久久久九九九| 亚洲男人的天堂va亚洲男人社| 亚洲色棕合| 台湾佬中文娱乐网久久久久久久久久com | 9I1性色影院| 骚货操死你| 超碰色大香蕉| 色综合天天爱去电影网| 亚洲av资源| 伊人麻豆传媒| 欧美后入| 亚洲一区在线观看欧洲 | 小骚逼被操的爽不爽| 欧美少妇高潮久久91| 久神马| 欧美色道啊| 午夜啊啊| 午夜成人爽爽爽爽A片李冰冰| 日本一级特级毛片视频| 亚洲日韩在线a不卡99精品| 无码操逼视频一下| 香蕉久久AⅤ...| 久久一级无码精品毛片6| 99热在线观看| 99精品热| 国产专区路线| 丝袜翘臀后入欧美校园亚洲自拍另类小说一区中文字幕少妇诱惑 | 精品网站9999| 超碰97久久观看| 久久机热| 色欧洲| AV天堂国产| 丰满岳乱妇一区二区三区| 久久性爱网站| 久久国产视频性吧 | 亚洲中文字幕熟女| 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 性爱乱伦视频免费| 成人天天爽| 人人天天干干| 日本Xx性爱| 色一情一乱一乱一区91Av| 国产乱伦亚洲色图高清无码| 91欧美| 日韩av乱伦| 91亚洲不卡一区| 激情视频一二三| 97国产|免费| AⅤ片水多多| 日韩一级片在线看| 免費人妻夜夜爽天天爽爽一区| 成人在线午夜视频一区| 中文字幕三四五区| 国产欧美日韩一区二区三区| 色99视频| 九九九九九九九九九九九九九九九女| 爱丝福利| 老外又粗又长一晚做五次| 欧美顶级黄片AAAAA在线免费看| 花野真衣| 天天综合-91入口| 欧美一区二区三区另类精品| 超碰97最新人妻| 欧美成人一区二区| 久久超碰98| 精品九区| 精品国产久热在线观看| 天天综合网在线| 欧美一区二区| 日人妻视频91| 97久久精品亚洲中六字幕| 亚洲天堂电影网99999| www.亚洲成人一区| 日韩三级一区 | 18禁看网站一区| 日韩精品一区二区三区色欲| 淫骚熟女一区二区三区| 欧美色999| 亚洲色五月| 日韩精品一区,二区 九九...老司机| 精品国产Av无码久久久伦古装| 久久精品色欧美aⅴ一区二区| av在线人气| 亚洲久9| 十八禁视频网站| 乱码人妻一区二区三区| 一级岛国大片| 男人的天堂激情| 99999精品| 天天干天天插| 九九热re99re6在线精品| 亚洲啪啪视频一区二区| 人人妻人人色| 激情 欧美 亚洲 小说| 67194无码不卡| 亚洲男人电影天堂| 色九九九九久| 夜夜躁狠狠躁日日躁av| 久热这里| 中文字幕在线免费观看| 91一区二区| 校园春色五月天| 大香蕉碰| 欧美性爱第1 页| 97中文超碰| 人妻少妇久久中文字幕一区二区 麻豆 | http://qxhbdz.com| 9118禁| 欧美成人9797| 日产操逼| 东北女人的毛片| 草莓精品视频在线免费观看| 日夜干射色啊| 巨爆乳一区二区爆乳区| 大香蕉琪琪日本女优不卡| 亚洲色图欧美色图日韩色图| 91AV天美在线视频| www.色婷婷色综合| 福利视频网站| AV天堂电影网| 欧美黄片免费在线观看视频| 国产一区二区精品在线视频| 91|九色|国产熟女| 9丨久久九九九| 亚洲成人一二三区| 色综合天天| 超碰97.com| 美女啊啊啊啊啊啊啊| 人妻无一区二区三区| 少妇专区一二三四五| 亚洲一本大道中文字幕无码在线| 97色欧洲| 欧美日韩国第一区| 黄片色区软件| 欧美精品黑人猛交高潮| 爱干爱射网啊啊啊| 乱伦av麻豆| 国产精品久久久久婷婷二区次| 午夜福利久久久噜久噜久久综合 | 综合激情97| 1禁看欧美黄片免费看| 亚洲深夜福利| 中文字幕片| 亚洲欧美在线观看2021 | 淫色网综合| 亚洲欧洲精品视频发布| 友优传媒精品在线一区二区| 亚洲综合有玛| 夜色AV无码手机在线影院| 国产精品久久久午夜夜伦鲁鲁| 日韩有码一区三区| 91深夜夜| 综合 亚洲 欧美| 97视频900| 久久黄黄| 综合久久六月久久婷婷| 中欧人妻丝袜中文字幕| 久操视频免费观看| 欧美日韩国产传媒在线精品| 操逼视频亚洲| 日韩成人私密一级精品av| 色噜噜狠狠色综无码久久| 欧美色图亚洲色图成人在在线| 亚洲成a人在线观看久| 中文字幕蜜乳av| 正宗无毛一线天嫩逼| 久久欧洲| 99热99re超碰精品| www.国产高潮精品| 又大又长又粗又爽又黄| 亚洲日韩电影| 啊啊在线| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 99日韩| 亚洲毛片一级带毛片基地| 国产一国产一级毛片古装| 人妻精品一区一区三区蜜桃91| 香港成人一级视频在线青青草| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 五月综合色| 国产AV高清AV无码| 啪啪资源网| 国产黄色在线播放观看| 97国产人人| 男人天堂2030| 久操免费电影| 亚洲素人综合| 蜜臀久久精品久久久久视频| 手机久操欧美综合色码| 少妇被玩视频二三区| 极品色社| 男人的天堂在线有码| 丁香五月影院| 久久激情五月| 女人爽到高潮潮喷18禁网站| 在线看片国产精品每日更新| 岛国激情视频软件| 日韩性爱视频在线免费观看 | 91欧美性| 中国黄色特级精品一区二区三区片| 91网站18在线| 99精品伊人| 欧美78| 久久久专区| 日日摸日日碰| 亚洲女人毛茸茸91| 久久亚洲日韩国产欧| 日本性一区| 日本高清一本二本免费不卡| 密臀成人视频久久久| 亚洲欧美激情小说| 72av视频| 超碰78| 一牛影视久久久一区二区三区| 亚洲 自拍偷拍 欧美| 97超碰超| 97超碰色中文字幕| 9997se| 熟女91网| 国产一区二区在线看| 日本 情色 1区| 欧美啪啪色吧在线| 午夜性生活av免费在线看| a'v在线资源| 最新国内自拍av免费| 激情无码日韩| 久久人人爽人人爽人人片Ⅴ| 婷婷尹人大香蕉免费| 欧美专区第一页| 久啪| 人人看人人插| 国产福利视频精品视频| 大香蕉黄色一级片免费看| 亚洲国产成人精品久久久国产成人一区二区三.| 国产绿奴视频在线观看| 91强奸乱轮| 欧美日韩99精品麻豆传媒| 激情图片亚洲色图| 婷婷精品国产欧美精品亚洲人人爽| 欧美色吧综合| 日本影视久久免费| 色嗨嗨在线| 吻戏激情性巴克| 无码视频一区二区| 97在线播放| 99久久亚洲精品无码毛片潘甜甜| 岛国激情视频软件| 五月丁香大香蕉| 九九拍拍精品视频在线播放| 激情内射| 国产一区二区成人av在线播放| 久久久国产亚洲精品系列| 成人欧美一区二区三区黑人一| 国产农村妇女精品1区二区| 后入式999| 精品人妻免费观看| 中文字幕性感少妇av| 久极品在线观看| 死我十八禁| 东京热视频网| 久久久爆乳翘臀一线天伦理视频| 日韩啪啪啪视频| 狠狠爱夜夜| 欧美经典一区二区三区| 九九毛片这里只有精品| 天天综合网亚洲综合网| 操逼无码操逼| 五月综合激情| 日本最新1区2区3区| 国产乱伦视频污| 精品久久99| 久久6热精品99视频| 日韩一级二级三级免费看完整版| 欧美一级黄色18片免费看| 中文字幕少妇色| 男人天堂东京热| 国产精品久久久久综合| 久久精品视频在线观看| 国产老太乱伦一区| 色99视频| 亚洲素人综合| 日韩不卡在线一区二区| 激情图片亚洲色图| 999久久久| 九月丁香婷婷| 超碰偷拍| 手机看av网站在线看| 日夜干射色啊| Sekablack无码一区| 伊人影院在线理论播放 | 97久久久网站| 超碰成人最新最好看| 激情亚洲天堂| 无码不卡亚洲成?人片| 夜夜爽77777| 校园激情狠狠四射| 久综合网| 久久老熟女| 久久久国产三级黄色片| 精品乱码在线观看| 国产亚洲中文不卡二区| 一级黄碟在线看| 午夜男人av| 色男人色天堂东京热| 成人一级性爱| 蜜桃一区二区三区| 欧美天天干| 亚洲999综合| 91精品啪在线观看国产城中村| 99热8| 久久6热视频免费观看| 人妻天天爽夜夜爽2| 国产激情av女片自拍| 后入日本1234| 婷婷色播婷婷| 变态综合色| 97超碰国产精品| 激情婷婷综合久久| 日韩在线人妻网站| 啊啊好多水| 蜜臀久久99精品久久久久久无删减 | 欧美日韩99| 在线视频资源| 午夜精品99久久久久传媒| 乱伦熟女论坛| 丁香婷婷激情五月天无毒不卡 | 六六久久日韩不卡| 亚洲天堂男人| 美国久久一二三四| 啪啪啪精品视频| 午夜福利 成人 91| 婷婷亚洲中文字幕在线| 午夜男女爽爽爽影院视频| 欧美日韩婷婷中文| 全球成人中文在线| 天天做天天爱| 久久久久久九九九九-美女久久久久久久-成人AV | 国产九九九九九九九九| 91精品国产91久久久久久久久久久久| 婷婷午夜| 自拍偷拍国产欧美日韩韩| 亚洲丝袜99| www.色婷婷.com| 国产精品日本无码A片| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 日韩一级二级三级| 欧美老妇综合网| 国产精品爽爽va在线观看98| 啊啊啊啊,啊啊好多水| 婷婷人妻激情| 欧美专区在线| 日操粉逼逼| 欧美激情专区| 久久熟女久| 亚州色交| 亚洲一卡2卡3卡4卡乱码网站| 97超级久久| 伊人久久久日韩一区| 在线播放中文字幕| 一级人妻性爱视频| 午夜经典| a人片中文字幕一区二区| 丁香婷婷色五月| 操逼片国产| 凹凸精品熟女在线观看| 我爱搞逼综合网| www.操| 99精品久久久久久久婷婷蜜桃| 色哟哟AⅤ| 变态综合色| 国产人妻精品一区二区三区秋霞 | 国产夫妻性生活视频| 熟妇一区二区三区| 97人人草| 欧美精品久久久久久久久88| 一道α片欧美| 在线不欧美| 噜噜噜亚洲精| 久久久久久久久久久久欧美日| 国产人伦精品一区二区三区| 天天色播| 操逼网站视频漫画国产| 91精品久久久久五月天精品| 97综合网| 欧美啪啪色吧在线| 人人妻人人色一区二区三区| 91社操逼| www.AV有限公司一区| 人人操AV| 熟女被操视频网址| 伊人五月天激情| 人人操我人人干| 蜜臀久久99精品久久久久久-DVD原版全| 舔人妻中文免费视频| 曰本91情色| 青青青青草av在线观看| 国产视频三区四区| 欧美美女自慰一区二区三区| 色婷婷色99国产综合精品| 国产激情av女片自拍| 无码精品一区二区三区潘金莲| 激情五月综合开心五月| 国产精品直播在线观看直播| 亚洲国产97| 欧美97在线欧| 91老熟女| 性综合网| 日韩视频中文字幕| 欧美色偷偷| 超碰97久久| 高清有码一区二区| 17c嫩草51久久91嫩草| 91天美| 日韩成年人性爱视频| 97色碰| 黄色免费网| 色婷婷六月丁香七月婷婷| 91露脸熟女专区| 宅男影院久久久,99| 欧美aa一级片| 在线视频免费播放一区| 日本一本道A级黄色毛片试看60分钟| 午夜爽爽爽在线观看永久入口姬片| 五十路三级片| 九九综合久久| 99∨VTV| 男人天堂.AB| 欧美一二在线| 97欧美色综合| 欧美激情亚洲| 久久神马|