tomcat配置調(diào)優(yōu)與安全總結(jié)(轉(zhuǎn))

作為運(yùn)維,避免不了與tomcat打交道,然而作者發(fā)現(xiàn)網(wǎng)絡(luò)上關(guān)于tomcat配置和調(diào)優(yōu)安全的文章非常散,通過(guò)參考各位大神的相關(guān)技術(shù)文檔,根據(jù)作者對(duì)tomcat的運(yùn)維經(jīng)驗(yàn),總結(jié)了一些tomcat的基礎(chǔ)運(yùn)維注意事項(xiàng),希望對(duì)廣大技術(shù)兄弟們有些幫助。

本篇文章只是對(duì)tomcat模板的基礎(chǔ)調(diào)優(yōu),除了部署tomcat的各系統(tǒng)環(huán)境和配置,影響tomcat并發(fā)和性能的另一大重要因素,就是java的代碼工程,而如何在生產(chǎn)中優(yōu)化java工程,這個(gè)就需要運(yùn)維與開(kāi)發(fā)共同配合,尤其是運(yùn)維需要有開(kāi)發(fā)與運(yùn)維是同一個(gè)團(tuán)隊(duì)的意識(shí),只有雙方配合默契才能發(fā)揮最大戰(zhàn)力,要知道一個(gè)人的力量永遠(yuǎn)是有限的,只有團(tuán)隊(duì)合作才能爆發(fā)出真正力量!

而包含了Java工程的整體優(yōu)化就設(shè)計(jì)到整體的架構(gòu)優(yōu)化,這個(gè)更加是一個(gè)細(xì)致而有趣的過(guò)程,也是運(yùn)維通向架構(gòu)師的一個(gè)必經(jīng)之路!

1功能優(yōu)化

1.1硬件資源對(duì)tomcat的影響

作者實(shí)測(cè),在阿里云的不同區(qū)域部署相同系統(tǒng)應(yīng)用配置的tomcat,在壓測(cè)時(shí)會(huì)出現(xiàn)吞吐量差異達(dá)到1/4,經(jīng)過(guò)對(duì)比發(fā)現(xiàn),兩個(gè)區(qū)域的cpu頻率2.2GHz和2.6Ghz。系統(tǒng)硬件性能直接影響tomcat的并發(fā)量,起決定作用的是CPU和MEM,CPU運(yùn)行速度提升,會(huì)帶來(lái)tomcat響應(yīng)時(shí)間的縮短,mem大小決定工程需要內(nèi)存的大小和工程的并發(fā)數(shù)量。

1.2Java虛擬機(jī)調(diào)優(yōu)

1.2.1JDK版本選擇

如果新手請(qǐng)選擇SUN的JVM,在滿足項(xiàng)目需要的前提下,盡量選用版本較高的JVM,一般來(lái)說(shuō)高版本產(chǎn)品在速度和效率上比低版本會(huì)有改進(jìn)。JDK1.4比JDK1.3性能提高了近10%-20%,JDK1.5比JDK1.4性能提高25%-75%。因此對(duì)性能要求較高的情況推薦使用JDK1.6。

這里需要補(bǔ)充的是,各位在打算升級(jí)JVM時(shí),一定要先讓開(kāi)發(fā)先試用高版本的JVM,調(diào)試高版本JVM對(duì)工程的影響,經(jīng)過(guò)測(cè)試后逐步部署到測(cè)試環(huán)境,經(jīng)過(guò)一定時(shí)間的驗(yàn)證,發(fā)現(xiàn)沒(méi)有問(wèn)題后再謹(jǐn)慎的更換到生產(chǎn)。JVM版本不一致,很容易出現(xiàn)各類異常,對(duì)待生產(chǎn),謹(jǐn)慎永遠(yuǎn)是第一原則!

JVM調(diào)優(yōu)參見(jiàn):http://vekergu.blog.51cto.com/9966832/1626733

1.2.2JDK參數(shù)優(yōu)化

Tomcat內(nèi)存優(yōu)化主要是對(duì)tomcat啟動(dòng)參數(shù)優(yōu)化,我們可以在tomcat的啟動(dòng)腳本catalina.sh中設(shè)置JAVA_OPTS參數(shù)。

1.JAVA_OPTS參數(shù)說(shuō)明

-server?啟用jdk?的?server?版;

-Xms???java虛擬機(jī)初始化時(shí)的最小內(nèi)存;

-Xmx??java虛擬機(jī)可使用的最大內(nèi)存;

-XX:PermSize????內(nèi)存永久保留區(qū)域

-XX:MaxPermSize???內(nèi)存最大永久保留區(qū)域

-Xms=-Xmx=服務(wù)器內(nèi)存*70%,如部署tomcat,jboss在同一臺(tái)服務(wù)器-Xms=-Xmx=服務(wù)器內(nèi)存*80%*1/4,現(xiàn)公司服務(wù)器內(nèi)存一般都可以加到最大4G,所以可以采取以下配置,把以下參數(shù)添加到catalina.sh里面,

JAVA_OPTS='-Xms1024m?-Xmx4096m?-XX:PermSize=256M?-XX:MaxNewSize=256m-XX:MaxPermSize=256m'

#-Xmx6000m????????????????????????:設(shè)置JVM最大可用內(nèi)存為6000MB

#-Xms6000m????????????????????????:設(shè)置JVM初始可用內(nèi)存為6000MB

#-Xmn2g??????????????????????????????:設(shè)置年輕代大小為2G

#-Xss128k?????????????????????????????:設(shè)置每個(gè)線程的堆棧大小為128k

#-XX:NewRatio=4?????????????????:設(shè)置年輕代與年老代的比值為4

#-XX:SurvivorRatio=4????????????:設(shè)置年輕代中Eden區(qū)與Survivor區(qū)的大小比值為4

#-XX:PermSize=512m????????????????????:設(shè)置堆棧永久區(qū)起始大小為512m

#-XX:MaxPermSize=512m?????????????:設(shè)置堆棧永久區(qū)最大大小為512m

#-XX:MaxTenuringThreshold=0?????:設(shè)置垃圾最大年齡為0

#-XX:+UseParallelGC?????????????????????:選擇垃圾收集器為并行收集器

#-XX:ParallelGCThreads=8?????????????:配置并行收集器的線程數(shù)

#-XX:+UseParallelOldGC????????????????:配置年老代垃圾收集方式為并行收集

#-XX:+UseAdaptiveSizePolicy?????:并行收集器會(huì)自動(dòng)選擇年輕代區(qū)大小和相應(yīng)的Survivor區(qū)比例,以達(dá)到目標(biāo)系統(tǒng)規(guī)定的最低響應(yīng)時(shí)>間或者收集頻率等,此值建議使用并行收集器時(shí),一直打開(kāi)。

1.2.3生產(chǎn)案例

根據(jù)作者本人的經(jīng)驗(yàn),生產(chǎn)環(huán)境需要確定對(duì)JVM的設(shè)置,還是需要根據(jù)java的運(yùn)行狀態(tài),通過(guò)監(jiān)控后,不斷的調(diào)試的一個(gè)過(guò)程,沒(méi)有那個(gè)配置一上來(lái)就可以適應(yīng)所有的場(chǎng)景。以下就舉列作者常用的一個(gè)JVM配置方式:

JAVA_OPTS="

-server

-Xms1024m

-Xmx1024m

-Xmn384m

-XX:PermSize=64m

-XX:MaxPermSize=128m

-XX:+UseParallelOldGC

-XX:+PrintGCDateStamps

-XX:+PrintGCDetails

-Xloggc:/opt/tomcat/log/gc.log

-XX:+HeapDumpOnOutOfMemoryError

-XX:HeapDumpPath=/opt/tomcat/heap.bin"

說(shuō)明:

1.Xms與Xmx普遍選擇配置相同的大小,實(shí)際大小根據(jù)實(shí)際情況調(diào)整,由小向大增加,沒(méi)必要一開(kāi)始就增加到很大的內(nèi)存。

2.XX:PermSize設(shè)置堆棧永久區(qū)起始大小,XX:MaxPermSize設(shè)置堆棧永久區(qū)最大大,其實(shí)設(shè)置比默認(rèn)值大寫(xiě)即可,或者默認(rèn)也可以。作者這個(gè)這兩個(gè)值,是因?yàn)槌霈F(xiàn)過(guò)永久區(qū)內(nèi)存溢出,才進(jìn)行設(shè)定的。

3.UseParallelOldGC、PrintGCDateStamps、PrintGCDetails、Xloggc:/opt/tomcat/log/gc.log設(shè)置GClog日志,這個(gè)對(duì)分析tomcat中JVM內(nèi)存使用情況非常有效。

4.XX:+HeapDumpOnOutOfMemoryError、XX:HeapDumpPath=/opt/tomcat/heap.bin"設(shè)置內(nèi)存溢出時(shí),輸出HeapDump,具體如何使用分析HeapDump文件,請(qǐng)參考:http://vekergu.blog.51cto.com/9966832/1619640

5.作者對(duì)JVM參數(shù)設(shè)置的做法,調(diào)整合適的JVM內(nèi)存大小,開(kāi)啟GClog和HeapDump即可。

1.3tomcat集群之session共享

1.3.1基于tomcat集群的session共享

在{TOMCST_HOME}/conf/server.xml取消下面代碼注釋即可:

1

1.3.2基于memcached存儲(chǔ)session共享

具體配置方法見(jiàn):http://vekergu.blog.51cto.com/9966832/1672833

1.4站點(diǎn)的默認(rèn)網(wǎng)頁(yè)、自定義錯(cuò)誤頁(yè)面、禁止列目錄等功能

這些功能開(kāi)發(fā)會(huì)在工程的WEB-INF目錄下的web.xml中設(shè)置,運(yùn)維了解下就好,者遇到類似問(wèn)題可以找到解決思路。

1.4.1默認(rèn)主頁(yè)

1.4.2自定義錯(cuò)誤頁(yè)面

1.4.3定義會(huì)話超時(shí)時(shí)間


1.4.4禁止列目錄


1.5管理AJP端口

AJP是為T(mén)omcat與HTTP服務(wù)器之間通信而定制的協(xié)議,能提供較高的通信速度和效率。如果tomcat前端放的是apache的時(shí)候,會(huì)使用到AJP這個(gè)連接器。由于我們公司前端是由nginx做的反向代理,因此不使用此連接器,因此需要注銷掉該連接器。在{TOMCST_HOME}/conf/server.xml中找到下列代碼,注釋即可

1.6取消默認(rèn)gc監(jiān)聽(tīng)

如果開(kāi)啟了GClog,再開(kāi)啟GC監(jiān)聽(tīng),會(huì)影響GClog輸出,功能重復(fù),可以選擇取消。

1.7自定義tomcat代碼路徑(2015-7-21新增)

其中:

docBase這個(gè)是你代碼的路徑

path這個(gè)是你訪問(wèn)網(wǎng)站的URL路徑,要區(qū)別path的意義,請(qǐng)看下面的舉例

舉例:

訪問(wèn)www.aaa.com

訪問(wèn)www.aaa.com/code_file

reloadable如果為true,會(huì)自動(dòng)加載變化的動(dòng)態(tài)文件,看起來(lái)挺智能的,但是,在tomcat加載變化代碼的時(shí)候有可能會(huì)出現(xiàn)內(nèi)存溢出,tomcat服務(wù)不正常等異常,建議還是false掉,更新完代碼腳本重啟tomcat才是王道。

此前看到一些文章,在講解自定義tomcat代碼路徑時(shí),reloadable全部是true,可能能多小伙伴都設(shè)置為true,建議對(duì)這個(gè)參數(shù)認(rèn)真對(duì)待,否則一不小心就是一個(gè)坑。。。。

2性能優(yōu)化

2.1屏蔽DNS查詢

Web應(yīng)用程序可以通過(guò)Web容器提供的getRemoteHost()方法獲得訪問(wèn)Web應(yīng)用客戶的IP地址和名稱,但是這樣會(huì)消耗Web容器的資源,并且還需要通過(guò)IP地址和DNS服務(wù)器反查用戶的名字。因此當(dāng)系統(tǒng)上線時(shí),可以將這個(gè)屬性關(guān)閉,從而減少資源消耗,那么Web應(yīng)用也就只能記錄下IP地址。修改的屬性是enableLoopups="false"。

2.2調(diào)整線程數(shù)

Tomcat通過(guò)線程池來(lái)為用戶訪問(wèn)提供響應(yīng),對(duì)于上線的系統(tǒng)初步估計(jì)用戶并發(fā)數(shù)量后,再調(diào)整線程池容量。例如,用戶并發(fā)數(shù)量在100左右時(shí),可以設(shè)置minProcessors="100",maxProcessors="100"。將最大和最小設(shè)置為一樣后,線程池不會(huì)再釋放空閑的線程,當(dāng)用戶訪問(wèn)突然增加時(shí),不需要再消耗系統(tǒng)資源去創(chuàng)建新的線程。

2.3調(diào)整最大連接數(shù)

這個(gè)其實(shí)最復(fù)雜,即使用戶并發(fā)量大,但是系統(tǒng)反應(yīng)速度快,也沒(méi)必要把這個(gè)值設(shè)置太高,高了系統(tǒng)需要消耗大量的資源去切換線程,但是如果設(shè)置太低也會(huì)造成應(yīng)用無(wú)法滿足用戶并發(fā)需要。因此設(shè)置這個(gè)最好能夠結(jié)合整個(gè)系統(tǒng)的跟蹤與調(diào)優(yōu),使系統(tǒng)達(dá)到最好的平穩(wěn)狀態(tài),一般設(shè)置為maxProcessors的1.5倍即可。

2.4調(diào)整網(wǎng)絡(luò)超時(shí)

主要是HTTP協(xié)議也有個(gè)連接過(guò)程,客戶端連接到服務(wù)器上后,如果長(zhǎng)時(shí)間沒(méi)有得到處理就會(huì)被釋放。如果服務(wù)器處理速度較慢,但是希望每個(gè)用戶都能得到有效處理,或者網(wǎng)絡(luò)環(huán)境不好,需要保證用戶不會(huì)因?yàn)槌瑫r(shí)中斷,也可以把時(shí)間加長(zhǎng)。但是一般設(shè)置成connectionTimeout="30000"即可。太長(zhǎng)對(duì)系統(tǒng)來(lái)說(shuō)價(jià)值不大,反而會(huì)浪費(fèi)系統(tǒng)資源在無(wú)謂的長(zhǎng)連接上。

2.5壓縮管理

tomcat作為一個(gè)應(yīng)用服務(wù)器,也是支持gzip壓縮功能的。我們可以在server.xml配置文件中的Connector節(jié)點(diǎn)中配置如下參數(shù),來(lái)實(shí)現(xiàn)對(duì)指定資源類型進(jìn)行壓縮。

compression="on"#?打開(kāi)壓縮功能

compressionMinSize="50"#?啟用壓縮的輸出內(nèi)容大小,默認(rèn)為2KB

noCompressionUserAgents="gozilla,?traviata"#?對(duì)于以下的瀏覽器,不啟用壓縮

compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"#?哪些資源類型需要壓縮

如果使用apache/nginx代理,所以tomcat自身不需要進(jìn)行壓縮,會(huì)給服務(wù)器增加壓力

2.6tomcat的三種運(yùn)行模式選擇

2.6.1Bio

默認(rèn)的模式,性能非常低下,沒(méi)有經(jīng)過(guò)任何優(yōu)化處理和支持。

2.6.2Nio

利用java的異步io護(hù)理技術(shù),no blocking IO技術(shù).

想運(yùn)行在該模式下,直接修改server.xml里的Connector節(jié)點(diǎn),修改protocol為

protocol="org.apache.coyote.http11.Http11NioProtocol"

connectionTimeout="20000"

URIEncoding="UTF-8"

useBodyEncodingForURI="true"

enableLookups="false"

redirectPort="8443"/>

啟動(dòng)后,就可以生效。

2.6.3Apr

安裝起來(lái)最困難,但是從操作系統(tǒng)級(jí)別來(lái)解決異步的IO問(wèn)題,大幅度的提高性能.。必須要安裝apr和native,直接啟動(dòng)就支持apr。

安裝APR

sudoyum?-yinstallapr??apr-devel

tarzxvf?tomcat-native.tar.gz//該文件在tomcat的bin目錄下面

cdtomcat-native-1.1.24-src/jni/native

./configure--with-apr=/usr/bin/apr-1-config

make

makeinstall

安裝完成之后會(huì)出現(xiàn)如下提示信息

Libraries have been installed in:

/usr/local/apr/lib

安裝成功后還需要對(duì)tomcat設(shè)置環(huán)境變量,方法是在catalina.sh文件中增加一行:

CATALINA_OPTS="-Djava.library.path=/usr/local/apr/lib"

修改8080端對(duì)應(yīng)的

protocol="org.apache.coyote.http11.Http11AprProtocol"

2.7Tomcat連接相關(guān)參數(shù)總結(jié)

在Tomcat配置文件server.xml中的配置中

maxThreads?客戶請(qǐng)求最大線程數(shù)

minSpareThreads????Tomcat初始化時(shí)創(chuàng)建的?socket?線程數(shù)

maxSpareThreads???Tomcat連接器的最大空閑?socket?線程數(shù)

enableLookups??????若設(shè)為true,?則支持域名解析,可把?ip?地址解析為主機(jī)名

redirectPort????????在需要基于安全通道的場(chǎng)合,把客戶請(qǐng)求轉(zhuǎn)發(fā)到基于SSL?的?redirectPort端口

acceptAccount???????監(jiān)聽(tīng)端口隊(duì)列最大數(shù),滿了之后客戶請(qǐng)求會(huì)被拒絕(不能小于maxSpareThreads??)

connectionTimeout???連接超時(shí)

minProcessors?????????服務(wù)器創(chuàng)建時(shí)的最小處理線程數(shù)

maxProcessors????????服務(wù)器同時(shí)最大處理線程數(shù)

URIEncoding????URL統(tǒng)一編碼

compression?打開(kāi)壓縮功能

compressionMinSize???啟用壓縮的輸出內(nèi)容大小,這里面默認(rèn)為2KB

compressableMimeType?壓縮類型

connectionTimeout?定義建立客戶連接超時(shí)的時(shí)間.?如果為?-1,?表示不限制建立客戶連接的時(shí)間

2.8生產(chǎn)配置實(shí)例

URIEncoding="UTF-8"#設(shè)置編碼

minSpareThreads="25"#Tomcat初始化時(shí)創(chuàng)建的?socket線程數(shù)

maxSpareThreads="75"#Tomcat連接器的最大空閑socket?線程數(shù),一旦創(chuàng)建的線程超過(guò)這個(gè)值,Tomcat就會(huì)關(guān)閉不再需要的socket線程。默認(rèn)值50

enableLookups="false"#屏蔽DNS查詢

disableUploadTimeout="true"#該標(biāo)志位表明當(dāng)執(zhí)行servlet時(shí),是否允許servlet容器使用一個(gè)不同的、更長(zhǎng)的連接超時(shí)。啟用該標(biāo)志位將導(dǎo)致在上傳數(shù)據(jù)時(shí),要么使用更長(zhǎng)的時(shí)間完成上傳,要么出現(xiàn)更長(zhǎng)的超時(shí)。如果不指定,該屬性為“false”。

connectionTimeout="20000"#網(wǎng)絡(luò)超時(shí)時(shí)間

acceptCount="300"#容許的最大連接數(shù),一般設(shè)置為maxProcessors的1.5倍即可,滿了之后客戶請(qǐng)求會(huì)被拒絕(不能小于maxSpareThreads??)

maxThreads="300"#客戶請(qǐng)求最大線程數(shù),默認(rèn)值為“200”

maxProcessors="1000"#最大連接線程數(shù),即:并發(fā)處理的最大請(qǐng)求數(shù),默認(rèn)值為75?,一旦創(chuàng)建的線程超過(guò)這個(gè)值,Tomcat就會(huì)關(guān)閉不再需要的socket線程

minProcessors="5"#最小空閑連接線程數(shù),用于提高系統(tǒng)處理性能,默認(rèn)值為10

useURIValidationHack="false"


compression="on"#打開(kāi)壓縮功能

compressionMinSize="2048"#啟用壓縮的輸出內(nèi)容大小,這里面默認(rèn)為2KB

compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"#壓縮類型

-->

redirectPort="8443"/>

3安全優(yōu)化

3.1tomcat影藏版本信息

Tomcat安裝目錄下的lib目錄下,名稱為catalina.jar,直接修改catalina.jar中的文件,org/apache/catalina/util/ServerInfo.properties

server.info=Apache Tomcat/7.0.53

3.2禁用Tomcat管理頁(yè)面

我們線上是不使用Tomcat默認(rèn)提供的管理頁(yè)面的,因此都會(huì)在初始化的時(shí)候就把這些頁(yè)面刪掉。這些頁(yè)面是存放在Tomcat安裝目錄下的webapps目錄下的。我們只需要?jiǎng)h除該目錄下的所有文件即可。當(dāng)然,還有涉及管理頁(yè)面的2個(gè)配置文件host-manager.xml和manager.xml也需要一并刪掉。這兩個(gè)文件存放在Tomcat安裝目錄下的conf/Catalina/localhost目錄下。

3.3用普通用戶啟動(dòng)Tomcat

為了進(jìn)一步安全,我們不建議使用root來(lái)啟動(dòng)Tomcat。這邊建議使用專用用戶tomcat或者nobody用戶來(lái)啟動(dòng)Tomcat。在啟動(dòng)之前,需要對(duì)我們的tomcat安裝目錄下所有文件的屬主和屬組都設(shè)置為指定用戶。

3.4分離Tomcat和項(xiàng)目的用戶

為了防止Tomcat被植入web shell程序后,可以修改項(xiàng)目文件。因此我們要將Tomcat和項(xiàng)目的屬主做分離,這樣子,即便被搞,他也無(wú)法創(chuàng)建和編輯項(xiàng)目文件。

3.5關(guān)閉war自動(dòng)部署

默認(rèn)Tomcat是開(kāi)啟了對(duì)war包的熱部署的。為了防止被植入木馬等惡意程序,因此我們要關(guān)閉自動(dòng)部署。

修改實(shí)例:

1

2

3

unpackWARs="false"autoDeploy="false">

3.6更改關(guān)閉Tomcat實(shí)例的指令

server.xml中定義了可以直接關(guān)閉Tomcat實(shí)例的管理端口。我們通過(guò)telnet連接上該端口之后,輸入SHUTDOWN(此為默認(rèn)關(guān)閉指令)即可關(guān)閉Tomcat實(shí)例(注意,此時(shí)雖然實(shí)例關(guān)閉了,但是進(jìn)程還是存在的)。由于默認(rèn)關(guān)閉Tomcat的端口和指令都很簡(jiǎn)單。默認(rèn)端口為8005,指令為SHUTDOWN。因此我們需要將關(guān)閉指令修改復(fù)雜一點(diǎn)。

當(dāng)然,在新版的Tomcat中該端口僅監(jiān)聽(tīng)在127.0.0.1上,因此大家也不必?fù)?dān)心。除非黑客登陸到tomcat本機(jī)去執(zhí)行關(guān)閉操作。

修改實(shí)例:

1

4內(nèi)核優(yōu)化

在修改內(nèi)核參數(shù)的時(shí)候,建議大家逐個(gè)設(shè)置,然后反復(fù)試驗(yàn),切勿圖方便直接拿上就用,一次全部替換。

優(yōu)化網(wǎng)絡(luò)參數(shù)

修改/etc/sysctl.cnf文件,在最后追加如下內(nèi)容:

net.core.netdev_max_backlog?=?32768

net.core.somaxconn?=?32768

net.core.wmem_default?=?8388608

net.core.rmem_default?=?8388608

net.core.rmem_max?=?16777216

net.core.wmem_max?=?16777216

net.ipv4.ip_local_port_range?=?1024?65000

net.ipv4.route.gc_timeout?=?100

net.ipv4.tcp_fin_timeout?=?30

net.ipv4.tcp_keepalive_time?=?1200

net.ipv4.tcp_timestamps?=?0

net.ipv4.tcp_synack_retries?=?2

net.ipv4.tcp_syn_retries?=?2

net.ipv4.tcp_tw_recycle?=?1

net.ipv4.tcp_tw_reuse?=?1

net.ipv4.tcp_mem?=?94500000?915000000927000000

net.ipv4.tcp_max_orphans?=?3276800

net.ipv4.tcp_max_syn_backlog?=?65536

保存退出,執(zhí)行sysctl-p生效

內(nèi)核參數(shù)詳細(xì)作用,可以參考:http://blog.chinaunix.net/uid-21505614-id-2181210.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,732評(píng)論 6 539
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,214評(píng)論 3 426
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 177,781評(píng)論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 63,588評(píng)論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,315評(píng)論 6 410
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 55,699評(píng)論 1 327
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,698評(píng)論 3 446
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,882評(píng)論 0 289
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,441評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,189評(píng)論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,388評(píng)論 1 372
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,933評(píng)論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,613評(píng)論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 35,023評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 36,310評(píng)論 1 293
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,112評(píng)論 3 398
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,334評(píng)論 2 377

推薦閱讀更多精彩內(nèi)容