色黄视频网站-色接久久-色精品一区二区三区-色九-国内毛片-国内剧情麻豆

深圳搬家搬廠網(wǎng)站建設(shè)公司
當(dāng)前位置:網(wǎng)站首頁 > 新聞動(dòng)態(tài) > HTTP500解決辦法(記一次K8S POD頻繁重啟的優(yōu)化之旅)1.背景 返回列表

HTTP500解決辦法(記一次K8S POD頻繁重啟的優(yōu)化之旅)1.背景

發(fā)布時(shí)間:2023-12-05來源:網(wǎng)站建設(shè)公司

1.背景

最近有運(yùn)維反饋某個(gè)微服務(wù)頻繁重啟,客戶映像特別不好,需要我們盡快看一下。

聽他說完我立馬到監(jiān)控平臺(tái)去看這個(gè)服務(wù)的運(yùn)行情況,確實(shí)重啟了很多次。對于技術(shù)人員來說,這既是壓力也是動(dòng)力,大多數(shù)時(shí)候我們都是沉浸在單調(diào)的業(yè)務(wù)開發(fā)中,對自我的提升有限,久而久之可能會(huì)陷入一種舒適區(qū),遇到這種救火案例一時(shí)間會(huì)有點(diǎn)無所適從,但是沒關(guān)系,畢竟......

“我只是收了火,但沒有熄爐”,借用電影中的一句話表達(dá)一下此時(shí)的心情。

2.初看日志

我當(dāng)即就看這個(gè)服務(wù)的運(yùn)行日志,里面有大量的oom異常,如下:

org.springframework.web.util.NestedServletException: Handlerdispatchfailed; nestedexceptionisjava.lang.OutOfMemoryError: GCoverheadlimitexceeded

整個(gè)服務(wù)基本可以說處于不可用狀態(tài),任何請求過來幾乎都會(huì)報(bào)oom,但是這跟重啟有什么關(guān)系呢?是誰觸發(fā)了重啟呢?這里我暫時(shí)賣個(gè)關(guān)子,后面進(jìn)行解答。

3.k8s健康檢查介紹

我們的服務(wù)部署在k8s中,k8s可以對容器執(zhí)行定期的診斷,要執(zhí)行診斷,kubelet 調(diào)用由容器實(shí)現(xiàn)的 Handler (處理程序)。有三種類型的處理程序:

  • ExecAction:在容器內(nèi)執(zhí)行指定命令。如果命令退出時(shí)返回碼為 0 則認(rèn)為診斷成功。
  • TCPSocketAction:對容器的 IP 地址上的指定端口執(zhí)行 TCP 檢查。如果端口打開,則診斷被認(rèn)為是成功的。
  • HTTPGetAction:對容器的 IP 地址上指定端口和路徑執(zhí)行 HTTP Get 請求。如果響應(yīng)的狀態(tài)碼大于等于 200 且小于 400,則診斷被認(rèn)為是成功的。

每次探測都將獲得以下三種結(jié)果之一:

  • Success(成功):容器通過了診斷。
  • Failure(失敗):容器未通過診斷。
  • Unknown(未知):診斷失敗,因此不會(huì)采取任何行動(dòng)。

針對運(yùn)行中的容器,kubelet 可以選擇是否執(zhí)行以下三種探針,以及如何針對探測結(jié)果作出反應(yīng):

  • livenessProbe:指示容器是否正在運(yùn)行。如果存活態(tài)探測失敗,則 kubelet 會(huì)殺死容器, 并且容器將根據(jù)其重啟策略決定未來。如果容器不提供存活探針, 則默認(rèn)狀態(tài)為 Success。
  • readinessProbe:指示容器是否準(zhǔn)備好為請求提供服務(wù)。如果就緒態(tài)探測失敗, 端點(diǎn)控制器將從與 Pod 匹配的所有服務(wù)的端點(diǎn)列表中刪除該 Pod 的 IP 地址。初始延遲之前的就緒態(tài)的狀態(tài)值默認(rèn)為 Failure。如果容器不提供就緒態(tài)探針,則默認(rèn)狀態(tài)為 Success。
  • startupProbe: 指示容器中的應(yīng)用是否已經(jīng)啟動(dòng)。如果提供了啟動(dòng)探針,則所有其他探針都會(huì)被 禁用,直到此探針成功為止。如果啟動(dòng)探測失敗,kubelet 將殺死容器,而容器依其 重啟策略進(jìn)行重啟。如果容器沒有提供啟動(dòng)探測,則默認(rèn)狀態(tài)為 Success。

以上探針介紹內(nèi)容來源于https://kubernetes.io/zh/docs/concepts/workloads/pods/pod-lifecycle/#container-probes

看完探針的相關(guān)介紹,可以基本回答上面的疑點(diǎn)**“oom和重啟有什么關(guān)系?”,**是livenessProbe的鍋,簡單描述一下為什么:

  1. 服務(wù)啟動(dòng);
  2. k8s通過livenessProbe中配置的健康檢查Handler做定期診斷(我們配置的是HttpGetAction);
  3. 由于oom所以HttpGetAction返回的http status code是500,被k8s認(rèn)定為Failure(失?。?容器未通過診斷;
  4. k8s認(rèn)為pod不健康,決定“殺死”它然后重新啟動(dòng)。

這是服務(wù)的Deployment.yml中關(guān)于livenessProbe和restartPolicy的配置

livenessProbe:failureThreshold:5httpGet:path:/healthport:8080scheme:HTTPinitialDelaySeconds:180periodSeconds:20successThreshold:1timeoutSeconds:10restartPolicy:Always

4.第一次優(yōu)化

內(nèi)存溢出無外乎內(nèi)存不夠用了,而這種不夠用又粗略分兩種情況:

  1. 存在內(nèi)存泄漏情況,本來應(yīng)該清理的對象但是并沒有被清理,比如HashMap以自定義對象作為Key時(shí)對hashCode和equals方法處理不當(dāng)時(shí)可能會(huì)發(fā)生;
  2. 內(nèi)存確實(shí)不夠用了,比如訪問量突然上來了;

由于我們這個(gè)是一個(gè)老服務(wù),而且在多個(gè)客戶私有化環(huán)境都部署過,都沒出過這個(gè)問題,所以我直接排除了內(nèi)存泄漏的情況,那就將目光投向第二種“內(nèi)存確實(shí)不夠用”,通過對比訪問日志和詢問業(yè)務(wù)人員后得知最近客戶在大力推廣系統(tǒng),所以訪問量確實(shí)是上來了。

“不要一開始就陷入技術(shù)人員的固化思維,認(rèn)為是程序存在問題”

知道了原因那解決手段也就很粗暴了,加內(nèi)存唄,分分鐘改完重新發(fā)布。

http500解決辦法(記一次k8s pod頻繁重啟的優(yōu)化之旅)1.背景

終于發(fā)布完成,我打開監(jiān)控平臺(tái)查看服務(wù)的運(yùn)行情況,這次日志里確實(shí)沒有oom的字樣,本次優(yōu)化以迅雷不及掩耳之勢這么快就完了?果然是我想多了,一陣過后我眼睜睜看著pod再次重啟,但詭異的是程序日志里沒有oom,這一次是什么造成了它重啟呢?

我使用kubectl describe pod命令查看一下pod的詳細(xì)信息,重點(diǎn)關(guān)注Last State,里面包括上一次的退出原因和退回code。

http500解決辦法(記一次k8s pod頻繁重啟的優(yōu)化之旅)1.背景

可以看到上一次退出是由于OOMKilled,字面意思就是pod由于內(nèi)存溢出被kill,這里的OOMKilled和之前提到的程序日志中輸出的oom異常可千萬不要混為一談,如果pod 中的limit 資源設(shè)置較小,會(huì)運(yùn)行內(nèi)存不足導(dǎo)致 OOMKilled,這個(gè)是k8s層面的oom,這里借助官網(wǎng)的文檔順便介紹一下pod和容器中的內(nèi)存限制。

以下pod內(nèi)存限制內(nèi)容來源于https://kubernetes.io/zh/docs/tasks/configure-pod-container/assign-memory-resource/

*要為容器指定內(nèi)存請求,請?jiān)谌萜髻Y源清單中包含 *resources:requests字段。同理,要指定內(nèi)存限制,請包含 resources:limits。

以下deployment.yml將創(chuàng)建一個(gè)擁有一個(gè)容器的 Pod。容器將會(huì)請求 100 MiB 內(nèi)存,并且內(nèi)存會(huì)被限制在 200 MiB 以內(nèi):

apiVersion: v1 kind: Pod metadata: name: memory-demo namespace: mem-example spec: containers: - name: memory-demo-ctr image: polinux/stress resources: limits: memory: "200Mi"requests: memory: "100Mi"command: ["stress"] args: ["--vm", "1", "--vm-bytes", "150M", "--vm-hang", "1"]

當(dāng)節(jié)點(diǎn)擁有足夠的可用內(nèi)存時(shí),容器可以使用其請求的內(nèi)存。但是,容器不允許使用超過其限制的內(nèi)存。如果容器分配的內(nèi)存超過其限制,該容器會(huì)成為被終止的候選容器。如果容器繼續(xù)消耗超出其限制的內(nèi)存,則終止容器。如果終止的容器可以被重啟,則 kubelet 會(huì)重新啟動(dòng)它,就像其他任何類型的運(yùn)行時(shí)失敗一樣。

回歸到我們的場景中來講,雖然把jvm內(nèi)存提高了,但是其運(yùn)行環(huán)境(pod、容器)的內(nèi)存限制并沒有提高,所以自然是達(dá)不到預(yù)期狀態(tài)的,解決方式也是很簡單了,提高deployment.yml中memory的限制,比如jvm中-Xmx為1G,那memory的limits至少應(yīng)該大于1G。

至此,第一次優(yōu)化算是真正告一段落。

5.第二次優(yōu)化

第一次優(yōu)化只給我們帶來了短暫的平靜,重啟次數(shù)確實(shí)有所下降,但是離我們追求的目標(biāo)還是相差甚遠(yuǎn),所以亟需來一次更徹底的優(yōu)化,來捍衛(wèi)技術(shù)人員的尊嚴(yán),畢竟我們都是頭頂別墅的人。

http500解決辦法(記一次k8s pod頻繁重啟的優(yōu)化之旅)1.背景

頭頂撐不住的時(shí)候,吃點(diǎn)好的補(bǔ)補(bǔ)

上一次頻繁重啟是因?yàn)閮?nèi)存不足導(dǎo)致大量的oom異常,最終k8s健康檢查機(jī)制認(rèn)為pod不健康觸發(fā)了重啟,優(yōu)化手段就是加大jvm和pod的內(nèi)存,這一次的重啟是因?yàn)槭裁茨兀?/p>

前面說過k8s對http形式的健康檢查地址做探測時(shí),如果響應(yīng)的狀態(tài)碼大于等于 200 且小于 400,則診斷被認(rèn)為是成功的,否則就認(rèn)為失敗,這里其實(shí)忽略了一種極其普遍的情況“超時(shí)”,如果超時(shí)了也一并會(huì)歸為失敗。

為什么這里才引出超時(shí)呢,因?yàn)橹叭罩局杏写罅康膱?bào)錯(cuò),很直觀的可以聯(lián)想到健康檢查一定失敗,反觀這次并沒有直接證據(jù),逼迫著發(fā)揮想象力(其實(shí)后來知道通過kubectl describe pod是可以直接觀測到超時(shí)這種情況的)。

現(xiàn)在我們就去反推有哪些情況會(huì)造成超時(shí):

1.cpu 100%,這個(gè)之前確實(shí)遇到過一次,是因?yàn)樗拗鳈C(jī)cpu 100%,造成大量pod停止響應(yīng),最終大面積重啟;

2.網(wǎng)絡(luò)層面出了問題,比如tcp隊(duì)列被打滿,導(dǎo)致請求得不到處理。

3.web容器比如tomcat、jetty的線程池飽和了,這時(shí)后來的任務(wù)會(huì)堆積在線程池的隊(duì)列中;

4.jvm卡頓了,比如讓開發(fā)聞風(fēng)喪膽的fullgc+stw;

以上四種只是通過我的認(rèn)知列舉的,水平有限,更多情況歡迎大家補(bǔ)充。

現(xiàn)在我們一一排除,揪出元兇

1.看了監(jiān)控宿主機(jī)負(fù)載正常,cpu正常,所以排除宿主機(jī)的問題;

2.ss -lnt查看tcp隊(duì)列情況,并沒有堆積、溢出情況,排除網(wǎng)絡(luò)層面問題;

3.jstack查看線程情況,worker線程稍多但沒有到最大值,排除線程池滿的情況;

4.jstat gcutil查看gc情況,gc比較嚴(yán)重,老年代gc執(zhí)行一次平均耗時(shí)1秒左右,持續(xù)時(shí)間50s到60s左右嫌疑非常大。

通過上面的排除法暫定是gc帶來的stw導(dǎo)致jvm卡頓,最終導(dǎo)致健康檢查超時(shí),順著這個(gè)思路我們先優(yōu)化一把看看效果。

開始之前先補(bǔ)一張gc耗時(shí)的截圖,為了查看的直觀性,此圖由arthas的dashboard產(chǎn)生。

http500解決辦法(記一次k8s pod頻繁重啟的優(yōu)化之旅)1.背景

說實(shí)話我對gc是沒有什么調(diào)優(yōu)經(jīng)驗(yàn)的,雖然看過比較多的文章,但是連紙上談兵都達(dá)不到,這次也是硬著頭皮進(jìn)行一次“調(diào)參”,調(diào)優(yōu)這件事真是不敢當(dāng)。

具體怎么調(diào)參呢,通過上面gc耗時(shí)的分布,很直觀的拿到一個(gè)訊息,老年代的gc耗時(shí)有點(diǎn)長,而且次數(shù)比較頻繁,雖然圖里只有40次,但是相對于這個(gè)服務(wù)的啟動(dòng)時(shí)間來講已經(jīng)算頻繁了,所以目標(biāo)就是降低老年代gc頻率。

從我了解的gc知識(shí)來看,老年代gc頻繁是由于對象過早晉升導(dǎo)致,本來應(yīng)該等到age達(dá)到晉升閾值才晉升到老年代的,但是由于年輕代內(nèi)存不足,所以提前晉升到了老年代,晉升率過高是導(dǎo)致老年代gc頻繁的主要原因,所以最終轉(zhuǎn)化為如何降低晉升率,有兩種辦法:

1.增大年輕代大小,對象在年輕代得到回收,只有生命周期長的對象才進(jìn)入老年代,這樣老年代增速變慢,gc頻率也就降下來了;

2.優(yōu)化程序,降低對象的生存時(shí)間,盡量在young gc階段回收對象。

由于我對這個(gè)服務(wù)并不是很熟悉,所以很自然的傾向于方法1“調(diào)整內(nèi)存”,具體要怎么調(diào)整呢,這里借用一下美團(tuán)技術(shù)博客中提到的一個(gè)公式來拋磚一下:

http500解決辦法(記一次k8s pod頻繁重啟的優(yōu)化之旅)1.背景

圖片內(nèi)容來源于https://tech.meituan.com/2017/12/29/jvm-optimize.html

結(jié)合之前的那張gc耗時(shí)圖可以知道這個(gè)服務(wù)活躍數(shù)據(jù)大小為750m,進(jìn)而得出jvm內(nèi)存各區(qū)域的配比如下:

年輕代:750m*1.5 = 1125m

老年代:750m*2.5 = 1875m

接下來通過調(diào)整過的jvm內(nèi)存配比重新發(fā)布驗(yàn)證效果,通過一段時(shí)間的觀察,老年代gc頻率很明顯降下來了,大部分對象在新生代被回收,整體stw時(shí)間減少,運(yùn)行一個(gè)多月再?zèng)]有遇到自動(dòng)重啟的情況,由此也驗(yàn)證了我之前的猜測“因?yàn)槌掷m(xù)的gc導(dǎo)致健康檢查超時(shí),進(jìn)而觸發(fā)重啟”。

至此,第二次優(yōu)化告一段落。

6.第三次優(yōu)化

第二次優(yōu)化確實(shí)給我們帶來了一段時(shí)間的安寧,后續(xù)的一個(gè)多月宕機(jī)率的統(tǒng)計(jì)不至于啪啪打架構(gòu)部的臉。

http500解決辦法(記一次k8s pod頻繁重啟的優(yōu)化之旅)1.背景

剛安生幾天,這不又來活了

http500解決辦法(記一次k8s pod頻繁重啟的優(yōu)化之旅)1.背景

有運(yùn)維反饋某服務(wù)在北京客戶的私有化部署環(huán)境有重啟現(xiàn)象,頻率基本上在2天一次,接收到這個(gè)訊息以后我們立馬重視起來,先確定兩個(gè)事:

1.個(gè)例還是普遍現(xiàn)象-個(gè)例,只在這個(gè)客戶環(huán)境出現(xiàn);

2.會(huì)不會(huì)和前兩次優(yōu)化的問題一樣,都是內(nèi)存設(shè)置不合適導(dǎo)致的-不是,新服務(wù),內(nèi)存占用不高,gc也還好

結(jié)合前面的兩個(gè)推論**“個(gè)例”+“新服務(wù),各項(xiàng)指標(biāo)暫時(shí)正?!埃?*我懷疑會(huì)不會(huì)是給這個(gè)客戶新做的某個(gè)功能存在bug,因?yàn)槟壳笆褂妙l率不高,所以積攢一段時(shí)間才把服務(wù)拖垮。帶著這個(gè)疑惑我采取了守株待兔的方式,shell寫一個(gè)定時(shí)任務(wù),每5s輸出一下關(guān)鍵指標(biāo)數(shù)據(jù),定時(shí)任務(wù)如下:

#!/bin/bash whiletrue; do/bin/sleep 5 netstat -n | awk ''/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}''>> netstat.log ss -lnt >> ss.log jstack 1 >> jstack.log done

主要關(guān)注的指標(biāo)有網(wǎng)絡(luò)情況、tcp隊(duì)列情況、線程棧情況。

就這樣,一天以后這個(gè)服務(wù)終于重啟了,我一一檢查netstat.log,ss.log,jstack.log這幾個(gè)文件,在jstack.log中問題原因剝繭抽絲般顯現(xiàn)出來,貼一段stack信息讓大家一睹為快:

"qtp1819038759-2508"#2508 prio=5 os_prio=0 tid=0x00005613a850c800 nid=0x4a39 waiting on condition [0x00007fe09ff25000]java.lang.Thread.State: WAITING (parking)atsun.misc.Unsafe.park(Native Method)-parking to wait for <0x00000007221fc9e8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)atjava.util.concurrent.locks.LockSupport.park(LockSupport.java:175)atjava.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2044)atorg.apache.http.pool.AbstractConnPool.getPoolEntryBlocking(AbstractConnPool.java:393)atorg.apache.http.pool.AbstractConnPool.access$300(AbstractConnPool.java:70)atorg.apache.http.pool.AbstractConnPool$2.get(AbstractConnPool.java:253)-locked <0x00000007199cc158> (a org.apache.http.pool.AbstractConnPool$2)atorg.apache.http.pool.AbstractConnPool$2.get(AbstractConnPool.java:198)atorg.apache.http.impl.conn.PoolingHttpClientConnectionManager.leaseConnection(PoolingHttpClientConnectionManager.java:306)atorg.apache.http.impl.conn.PoolingHttpClientConnectionManager$1.get(PoolingHttpClientConnectionManager.java:282)atorg.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:190)atorg.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186)atorg.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)atorg.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)atorg.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)atcom.aliyun.oss.common.comm.DefaultServiceClient.sendRequestCore(DefaultServiceClient.java:125)atcom.aliyun.oss.common.comm.ServiceClient.sendRequestImpl(ServiceClient.java:123)atcom.aliyun.oss.common.comm.ServiceClient.sendRequest(ServiceClient.java:68)atcom.aliyun.oss.internal.OSSOperation.send(OSSOperation.java:94)atcom.aliyun.oss.internal.OSSOperation.doOperation(OSSOperation.java:149)atcom.aliyun.oss.internal.OSSOperation.doOperation(OSSOperation.java:113)atcom.aliyun.oss.internal.OSSObjectOperation.getObject(OSSObjectOperation.java:273)atcom.aliyun.oss.OSSClient.getObject(OSSClient.java:551)atcom.aliyun.oss.OSSClient.getObject(OSSClient.java:539)atxxx.OssFileUtil.downFile(OssFileUtil.java:212)

大量的線程hang在了 org.apache.http.impl.conn.PoolingHttpClientConnectionManager$1.get(PoolingHttpClientConnectionManager.java:282

這個(gè)是做什么的呢?這個(gè)正是HttpClient中的連接池滿了的跡象,線程在等待可用連接,最終導(dǎo)致jetty的線程被打滿,造成服務(wù)假死,自然是不能及時(shí)響應(yīng)健康檢查,最終觸發(fā)k8s的重啟策略。

最終通過排查代碼發(fā)現(xiàn)是由于使用阿里云oss sdk不規(guī)范導(dǎo)致連接沒有按時(shí)歸還,久而久之就造成了連接池、線程池被占滿的情況,至于為什么只有北京客戶有這個(gè)問題是因?yàn)橹挥羞@一家配置了oss存儲(chǔ),而且這個(gè)屬于新支持的功能,目前尚處于試點(diǎn)階段,所以短時(shí)間量不大,1到2天才出現(xiàn)一次重啟事故。

解決辦法很簡單,就是及時(shí)關(guān)閉ossObject,防止連接泄漏。

7.總結(jié)

通過前前后后一個(gè)多月的持續(xù)優(yōu)化,服務(wù)的可用性又提高了一個(gè)臺(tái)階,于我而言收獲頗豐,對于jvm知識(shí)又回顧了一遍,也能結(jié)合以往知識(shí)進(jìn)行簡單的調(diào)參,對于k8s這一黑盒,也不再那么陌生,學(xué)習(xí)了基本的概念和一些簡單的運(yùn)維指令,最后還是要說一句“工程師對于自己寫的每一行代碼都要心生敬畏,否則可能就會(huì)給公司和客戶帶來資損”。

閱讀過此文章的讀者,還閱讀過下面的文章

  • 深圳網(wǎng)站制作好后來年到期了該怎么辦
    <p> 深圳網(wǎng)站制作好后來年到期了該怎么辦,不管是個(gè)人還是公司,要想制作好一個(gè)網(wǎng)站真的不容易,不僅僅需要做網(wǎng)站前期的規(guī)劃和策劃工作,還需要對網(wǎng)站建設(shè)的欄目,內(nèi)容進(jìn)行填充和建設(shè),面對這一堆的要求和東西,整體還是比較麻煩和費(fèi)事的,所以,網(wǎng)站建設(shè)制作好之后,一定要注意來年的續(xù)費(fèi)問題,好多公司不注意這個(gè)問題,造成了網(wǎng)站后期打不開了,不能正常方面了,出現(xiàn)了問題才想起來網(wǎng)站沒有續(xù)費(fèi),接下來我們來看看深圳網(wǎng)絡(luò)公司是如何建議的。 </p> <p> 1.域名到期的影響<br /> &nbsp;一般情況下,網(wǎng)站域名需要一年進(jìn)行一次續(xù)費(fèi),也可以一次購買多年,如果域名到期沒有及時(shí)續(xù)費(fèi),網(wǎng)站就會(huì)打不開,域名續(xù)費(fèi)期一般是一個(gè)月,過了這個(gè)時(shí)間就會(huì)進(jìn)入贖回期,這時(shí)候就不能續(xù)費(fèi)了。<br /> &nbsp;2.服務(wù)器到期的影響<br /> &nbsp;服務(wù)器到期與域名一樣,到期后網(wǎng)站同樣不能打開,如果之前網(wǎng)站在做推廣,會(huì)直接影響展現(xiàn)效果,長時(shí)間不續(xù)費(fèi)的話,網(wǎng)站數(shù)據(jù)就會(huì)全部刪除了,之前的努力就全白做了。<br /> &nbsp;3.網(wǎng)站維護(hù)服務(wù)到期<br /> &nbsp;有些網(wǎng)絡(luò)公司服務(wù)商會(huì)有網(wǎng)站維護(hù)費(fèi)用,一般都是一年為一個(gè)期限,如果到期后您沒有及時(shí)維護(hù),網(wǎng)站出現(xiàn)問題后就不會(huì)有人給您維護(hù),就會(huì)造成影響。影響最大的就是網(wǎng)站展現(xiàn)的效果。<br /> </p>
  • 深圳做網(wǎng)站公司做網(wǎng)站時(shí)要明白這些
    <p> 深圳做網(wǎng)站公司做網(wǎng)站時(shí)要明白這些。其實(shí)做網(wǎng)站有的時(shí)候不僅僅是在做網(wǎng)站,更多的是在幫助其他公司在做網(wǎng)絡(luò)宣傳門戶,站在這個(gè)角度上你就知道你所承擔(dān)的責(zé)任了,作為現(xiàn)在公司網(wǎng)站建設(shè)不僅要符合時(shí)代潮流,更多的需要緊扣時(shí)代網(wǎng)頁設(shè)計(jì)特色和要求,只有這樣制作設(shè)計(jì)出來的網(wǎng)站才能更好的滿足現(xiàn)在人們的使用要求和觀念的,不管是在網(wǎng)站設(shè)計(jì)理念,網(wǎng)站布局規(guī)劃,以及網(wǎng)站內(nèi)容建設(shè)等等,這些方面都需要進(jìn)口時(shí)代主題和要求的,接下來我們來看看深圳網(wǎng)站制作公司是如何做的,需要做好那些方面的要求和規(guī)范呢? </p> <p> 審美在變,網(wǎng)站設(shè)計(jì)要緊跟潮流<br /> 也許用戶訪問時(shí),不會(huì)逐一閱讀網(wǎng)站內(nèi)容,但首先映入眼簾的一定是設(shè)計(jì)。也許網(wǎng)站在幾年前設(shè)計(jì)制作的確實(shí)很漂亮,但是我們無法否認(rèn)的事實(shí)是,用戶對網(wǎng)站設(shè)計(jì)的審美一直在不斷改變。這個(gè)比較容易對比,隨便找一個(gè)行業(yè),然后通過百度搜索到十家網(wǎng)站,分別對應(yīng)年份和網(wǎng)站的網(wǎng)址,讓一個(gè)不知情的人去逐一打開并評判感受。大體趨勢是越是新近設(shè)計(jì)制作的網(wǎng)站,越容易贏得用戶的接受承認(rèn)。其實(shí)這就是用戶的真實(shí)感受,每年快速改版重做對于很多公司來說有些壓力,但是筆者認(rèn)為一般而言網(wǎng)站2-3年是需要重新設(shè)計(jì)制作快速的。一個(gè)通過網(wǎng)站尋找供應(yīng)商的用戶,其瀏覽網(wǎng)站一般也就幾十秒到幾分鐘時(shí)間,先進(jìn)的網(wǎng)站設(shè)計(jì)效果是吸引其深入了解進(jìn)而咨詢的較好方法。<br /> 技術(shù)在變,網(wǎng)站制作要貼合需求<br /> 周圍的一切都在發(fā)生著巨變,網(wǎng)站技術(shù)也是如此,此前被很多網(wǎng)站公司采用的ASP網(wǎng)站開發(fā)語言幾乎已經(jīng)沒人使用,相對于傳統(tǒng)的PC端網(wǎng)站,現(xiàn)在更多看重的是移動(dòng)端,公司設(shè)計(jì)制作的網(wǎng)站現(xiàn)在多為自適應(yīng)PC端、PAD端以及手持移動(dòng)終端的響應(yīng)式網(wǎng)站。誰也不知道網(wǎng)站技術(shù)會(huì)走向哪個(gè)方向,但是對于普通的企業(yè)而言,我們可以把握趨勢,至少每隔兩三年對網(wǎng)站重新快速設(shè)計(jì)制作。<br /> 企業(yè)在變,網(wǎng)站建設(shè)要適應(yīng)發(fā)展<br /> 網(wǎng)站總是為企業(yè)服務(wù)的,換句話說就是網(wǎng)站的設(shè)計(jì)制作需要跟上企業(yè)的發(fā)展步伐。現(xiàn)在急劇變化的市場面前,如果想立于不敗之地,企業(yè)的經(jīng)營策略一定在不斷調(diào)整優(yōu)化。作為給企業(yè)發(fā)展提供服務(wù)的網(wǎng)站,其理應(yīng)不斷調(diào)整不斷優(yōu)化以適應(yīng)公司需求。現(xiàn)在是互聯(lián)網(wǎng)時(shí)代,用戶了解公司更多的也是通過網(wǎng)絡(luò),網(wǎng)站不僅是營銷的工具,更是企業(yè)品牌形象的展示窗口。由于人力成本的不斷升高,而網(wǎng)站設(shè)計(jì)更多的需要技術(shù)人員手工完成,所以真正定制開發(fā)的網(wǎng)站都價(jià)格不菲。但是同樣是網(wǎng)站建設(shè)公司網(wǎng)站改版也不一定就選擇定制,如果有合適的模板網(wǎng)站,也是不做的選擇。我們需要的是一個(gè)緊跟時(shí)代和用戶需求的網(wǎng)站,而非一定采用哪種方式實(shí)現(xiàn)它。 </p>
  • 英文網(wǎng)站制作需要注意那些問題和事項(xiàng)
    英文網(wǎng)站制作需要注意那些問題和事項(xiàng)。英文網(wǎng)站制作還是跟中文網(wǎng)站制作有比較大的區(qū)別的,應(yīng)為中文網(wǎng)站面對的客戶群體是國內(nèi)的用戶,而國內(nèi)的用戶對網(wǎng)站的使用習(xí)慣,要求都是跟國外不一樣的,從而在制作英文網(wǎng)站的時(shí)候,一定要注意,像這種英文網(wǎng)站制作還是需要從國外人使用網(wǎng)站的習(xí)慣,使用網(wǎng)站的一些喜好出發(fā),只有這樣制作出來的網(wǎng)站滿足國外人的使用的,這是一個(gè)方面,另外一個(gè)方面就是國外網(wǎng)站面對的搜索引擎,也是不一樣的,國外的搜索引擎跟國內(nèi)有著比較大的區(qū)別的,搜索引擎也是制作英文網(wǎng)站必須要考慮的一個(gè)方面了,最后就是網(wǎng)站制作價(jià)格方面了,一般英文網(wǎng)站制作價(jià)格要比國內(nèi)的網(wǎng)站制作價(jià)格高一些,這是一定的,畢竟國外網(wǎng)站制作的細(xì)節(jié)要求,以及針對搜索引擎優(yōu)化方面還是有比較高的要求的,所以,這些都是工作量,也都是需要處理好這些方面的細(xì)節(jié)工作的。
  • 網(wǎng)站設(shè)計(jì)公司的發(fā)展趨勢詳解
    <p> 網(wǎng)站設(shè)計(jì)公司的發(fā)展趨勢詳解,目前網(wǎng)頁設(shè)計(jì)公司慢慢的轉(zhuǎn)型升級成為一種綜合性的設(shè)計(jì)公司了,不僅僅是在網(wǎng)站設(shè)計(jì)了,如果單純的依賴于網(wǎng)站設(shè)計(jì),對于這樣的公司來說現(xiàn)在還是很被動(dòng)的,并且目前的網(wǎng)站制作價(jià)格已經(jīng)白熱化了,競爭也是很大的情況下,好多公司已經(jīng)賺不到什么錢了,面對這樣的市場形式,作為網(wǎng)站設(shè)計(jì)公司要不斷的擴(kuò)大和嘗試新的方式和方法,實(shí)現(xiàn)公司業(yè)務(wù)的升級和轉(zhuǎn)型,這也是擺在深圳<a href="http://www.szbc888.com" target="_blank"><strong>網(wǎng)站制作公司</strong></a>面對不可逾越的一個(gè)問題了,畢竟現(xiàn)在網(wǎng)站制作公司的活量不大,如果養(yǎng)一個(gè)專業(yè)的網(wǎng)頁設(shè)計(jì)技術(shù)團(tuán)隊(duì)專門作網(wǎng)站,根本養(yǎng)活不了這樣的公司的發(fā)展了,更多的還需要通過其他的渠道,其他的平臺(tái)上獲得更為有質(zhì)量的客戶,這也是當(dāng)下網(wǎng)站制作公司不得不面對的一個(gè)話題了。 </p> <p> <img src="static/picture/20231030113846_47114.jpg" alt="" /> </p> <p> <a href="http://www.szbc888.com" target="_blank"><strong>網(wǎng)頁設(shè)計(jì)公司</strong></a>業(yè)務(wù)范圍擴(kuò)大,于是著這個(gè)網(wǎng)站制作行業(yè)市場需求量在逐漸的縮小,并且凡是使用到網(wǎng)站的多半集中在一些公司,單位方面的需求了,對于一些個(gè)人對網(wǎng)站的需求還是很少的,除非一些專業(yè)化路線的個(gè)人才會(huì)這樣做的,網(wǎng)站設(shè)計(jì)公司的轉(zhuǎn)型升級,不僅提升的服務(wù)質(zhì)量,更多的將服務(wù)方位不斷的擴(kuò)大,從而得到更好的市場群體,能夠?yàn)楦嗟氖袌隹蛻舴?wù)。 </p>
  • 網(wǎng)站制作低價(jià)格策略已經(jīng)成為網(wǎng)站制作行業(yè)的殺手锏
    <p> 網(wǎng)站制作低價(jià)格策略已經(jīng)成為網(wǎng)站制作行業(yè)的殺手锏,整個(gè)大環(huán)境不好的情況下,好多公司在制作網(wǎng)站的時(shí)候,已經(jīng)在想盡辦法降低網(wǎng)站制作的成本了,從當(dāng)初的網(wǎng)站制作就直接去搜索引擎上搜索網(wǎng)站制作公司了,而如今制作網(wǎng)站已經(jīng)發(fā)生變化了,從搜索引擎走向了淘寶,拼多多這些低價(jià)平臺(tái)了,并且這些平臺(tái)都是擔(dān)保交易了,好多的需要<a href="http://www.szbc888.com" target="_blank"><strong>制作公司網(wǎng)站</strong></a>的商家慢慢轉(zhuǎn)向這個(gè)方面來了,所以制作出來的網(wǎng)站不是模板的就是仿制的網(wǎng)站,價(jià)格的確很低,并且效率也是很高的,這也是聰明的用戶慢慢的轉(zhuǎn)型和變化了,如果這些模板網(wǎng)站放在搜索引擎來的客戶的話,這些網(wǎng)站制作下來的費(fèi)用基本上在好幾千了,面對這樣的市場轉(zhuǎn)型和升級,這也讓好多網(wǎng)站制作公司尋找不同的出路了。 </p> <p> <img src="static/picture/20231030113212_16069.jpg" alt="" /> </p> <p> <a href="http://www.szbc888.com" target="_blank"><strong>深圳網(wǎng)站制作</strong></a>的價(jià)格的確沒有那么低,但是作為一些低價(jià)平臺(tái)上的用戶,他們?yōu)榱藸幦〉娇蛻?,低價(jià)引流,從而實(shí)現(xiàn)了低價(jià)格制作網(wǎng)站的形式,作為網(wǎng)站制作公司,你這樣低價(jià)格去做的目的就只有一個(gè),那就是辛苦轉(zhuǎn)不到錢的,都是轉(zhuǎn)一些辛苦錢而已,面對這樣的市場形式和要求,作為網(wǎng)站制作公司一定要不斷的提升網(wǎng)站制作的附加值,提升<a href="http://www.szbc888.com" target="_blank"><strong>網(wǎng)站制作</strong></a>的質(zhì)量,讓用戶以質(zhì)量取勝,不能專門走低價(jià)格戰(zhàn)略,不然你的公司是發(fā)展不起來的,也作不大的,作為用戶而已,你公司小還可以這樣去做,如果公司發(fā)展到一定程度的去制作網(wǎng)站,這對于你的公司來說是滅頂之災(zāi)了,所以選擇網(wǎng)站制作公司還是要從專業(yè)的角度出發(fā)去幫助客戶解決實(shí)際的問題,從而實(shí)現(xiàn)網(wǎng)站制作公司的價(jià)值和效益。 </p>
  • 深圳網(wǎng)站定制開發(fā)全流程詳解
    <p> 深圳網(wǎng)站定制開發(fā)全流程詳解,作為網(wǎng)站定制開發(fā)公司接下來給大家普及一下網(wǎng)站定制究竟要經(jīng)過那些過程呢,前期的網(wǎng)站溝通肯定是少不了的,除此之外,網(wǎng)站備案這塊也是需要的,只要是正規(guī)的公司,正常的流程,網(wǎng)站備案也是需要做的,剩下的就是網(wǎng)站制作過程中的一些溝通了,接下來我們來看看<a href="http://www.szbc888.com" target="_blank"><strong>深圳網(wǎng)站制作</strong></a>公司的一個(gè)標(biāo)準(zhǔn)的流程。 </p> <p> 需求分析: 通過對客戶業(yè)務(wù)的了解和與客戶對流程的討論對需求進(jìn)行基本建模,最終形成需求規(guī)格說明書<br /> 總體設(shè)計(jì): 通過分析需求信息,對系統(tǒng)的外部條件及內(nèi)部業(yè)務(wù)需求進(jìn)行抽象建模,最終形成概要設(shè)計(jì)說明文檔<br /> 詳細(xì)設(shè)計(jì): 此部分在對需求和概要設(shè)計(jì)的基礎(chǔ)上進(jìn)行系統(tǒng)的詳細(xì)設(shè)計(jì)(也包含部分代碼說明)<br /> 開發(fā)編程: 對系統(tǒng)進(jìn)行代碼編寫<br /> 測試分析與系統(tǒng)整合: 對所有功能模塊進(jìn)行模擬數(shù)據(jù)測試及其它相關(guān)性測試并整合所有模塊功能<br /> 現(xiàn)場支持: 系統(tǒng)上線試運(yùn)行進(jìn)行現(xiàn)場問題記錄、解答<br /> 系統(tǒng)運(yùn)行支持: 系統(tǒng)正式推產(chǎn)后,對系統(tǒng)進(jìn)行必要的維護(hù)和BUG修改<br /> </p>

Copyright ? 2015 深圳市鑫惠廣網(wǎng)絡(luò)科技有限公司 粵ICP備2023111395號

主站蜘蛛池模板: 微拍秒拍99福利精品小视频 | 青草国产在线观看 | 九色视频在线看 | 91精品成人 | 国产一级精品高清一级毛片 | 怡红院成人影院 | 91中文 | 精品伊人久久大线蕉地址 | 午夜激情一区 | 一色屋色费精品视频在线看 | 在线国产福利 | 成人国产精品视频频 | 伊人久久五月天 | 一区二区在线看 | 伊人久久大香线蕉久久婷婷 | 色视频免费在线观看 | 成人小视频网 | 成人免费视频网 | 精品欧美一区二区三区在线观看 | 真实国产乱子伦精品一区二区三区 | 在线播放69热精品视频 | 黄色高清视频 | 成人两性视频 | 亚洲日本中文字幕在线2022 | 视频在线欧美 | 国产精彩视频在线观看 | 一区二区不卡视频 | 在线看的黄色网址 | 国产在线精品一区二区 | 亚洲黄色小视频 | 一区二区三区免费视频观看 | 色噜噜狠狠先锋影音久久 | 都市激情 亚洲 | 午夜黄色网| 加勒比免费视频 | 亚洲天堂美女视频 | 欧美成人综合在线 | 成人欧美视频在线观看 | 久久私人影院 | 99精品久久久久久久婷婷 | 成人在线视频国产 |