chaosblade-常用使用帮助

#异常模拟场景使用说明

1.模拟CPU异常

命令:blade create cpu load  [选项参数]

参数:

  --timeout string  设定运行时长,单位是秒,通用参数

  --cpu-count string    指定 CPU 满载的个数

  --cpu-list string      指定 CPU 满载的具体核,核索引从 0 开始 (0-3 or 1,3)

  --cpu-percent string  指定 CPU 负载百分比,取值在 0-100

样例:

# 创建 CPU 满载实验

blade create cpu load

# 返回结果如下

{"code":200,"success":true,"result":"beeaaf3a7007031d"}

# code 的值等于 200 说明执行成功,其中 result 的值就是 uid。使用 top 命令验证实验效果

# 4 核都满载,实验生效,销毁实验

blade destroy beeaaf3a7007031d

# 返回结果如下

{"code":200,"success":true,"result":"command: cpu load --help false --debug false"}

# 指定随机两个核满载

blade create cpu load --cpu-count 2

# 使用 top 命令验证结果如下,实验生效

# 指定索引是 0,3 的核满载,核的索引从 0 开始

blade create cpu load --cpu-list 0,3

# 使用 top 命令验证结果如下,实验生效

# 指定索引 1 到 3 的核满载

blade create cpu load --cpu-list 1-3

# 指定百分比负载

blade create cpu load --cpu-percent 60

# 可以看到 CPU 总的使用率达到 60%, 空闲 40%

2.模拟内存使用

命令:blade create mem load [选项参数]

参数:

    --mem-percent string    内存使用率,取值是 0 到 100 的整数

    --mode string  内存占用模式,有 ram 和 cache 两种,例如 --mode ram。ram 采用代码实现,可控制占用速率,优先推荐此模式;cache 是通过挂载tmpfs实现;默认值是 --mode cache

    --reserve string    保留内存的大小,单位是MB,如果 mem-percent 参数存在,则优先使用 mem-percent

    --rate string 内存占用速率,单位是 MB/S,仅在 --mode ram 时生效

    --timeout string  设定运行时长,单位是秒,通用参数

样例:

# 在执行命令之前,先使用 top 命令查看内存使用信息,如下,总内存大小是 8G,使用了 7.6%

KiB Mem :  7.6/8010196 

# 执行内存占用 50%

blade c mem load --mode ram --mem-percent 50

# 查看内存使用

KiB Mem : 50.0/8010196

# 执行内存占用 100%

KiB Mem : 99.6/8010196

# 保留 200M 内存,总内存大小 1G

blade c mem load --mode ram --reserve 200 --rate 100

KiB Mem :  1014744 total,    78368 free,  663660 used,  272716 buff/cache

KiB Swap:        0 total,        0 free,        0 used.  209652 avail Mem

KiB Mem : 79.7/1014744  [||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||                  ]

3.模拟磁盘IO使用

  命令: blade create disk burn  [选项参数]

  参数:

  --path string      指定提升磁盘 io 的目录,会作用于其所在的磁盘上,默认值是 /

  --read            触发提升磁盘读 IO 负载,会创建 600M 的文件用于读,销毁实验会自动删除

  --size string      块大小, 单位是 M, 默认值是 10,一般不需要修改,除非想更大的提高 io 负载

  --timeout string  设定运行时长,单位是秒,通用参数

  --write            触发提升磁盘写 IO 负载,会根据块大小的值来写入一个文件,比如块大小是 10,则固定的块的数量是 100,则会创建 1000M 的文件,销毁实验会自动删除

  样例:

# 在执行实验之前可先观察磁盘 io 读写负载

iostat -x -t 2

# 上述命令会 2 秒刷新一次读写负载数据,截取结果如下

Device:        rrqm/s  wrqm/s    r/s    w/s    rkB/s    wkB/s avgrq-sz avgqu-sz  await r_await w_await  svctm  %util

vda              0.00    2.50    0.00    2.00    0.00    18.00    18.00    0.00    1.25    0.00    1.25  1.25  0.25

# 主要观察 rkB/s、wkB/s、%util 数据。执行磁盘读 IO 负载高场景

blade create disk burn --read --path /home

# 执行 iostat 命令可以看到读负载增大,使用率达 99.9%。执行 blade destroy UID(上述执行实验返回的 result 值)可销毁实验。

Device:        rrqm/s  wrqm/s    r/s    w/s    rkB/s    wkB/s avgrq-sz avgqu-sz  await r_await w_await  svctm  %util

vda              0.00    3.00  223.00    2.00 108512.00    20.00  964.73    11.45  50.82  51.19  10.00  4.44  99.90

# 销毁上述实验后,执行磁盘写 IO 负载高场景

blade create disk burn --write --path /home

# 执行 iostat 命令可以看到写负载增大,使用率达 90.10%。

Device:        rrqm/s  wrqm/s    r/s    w/s    rkB/s    wkB/s avgrq-sz avgqu-sz  await r_await w_await  svctm  %util

vda              0.00    43.00    0.00  260.00    0.00 111572.00  858.25    15.36  59.71    0.00  59.71  3.47  90.10

# 可同时执行读写 IO 负载场景,不指定 path,默认值是 /

blade create disk burn --read --write

# 通过 iostat 命令可以看到,整个磁盘的 io 使用率达到了 100%

Device:        rrqm/s  wrqm/s    r/s    w/s    rkB/s    wkB/s avgrq-sz avgqu-sz  await r_await w_await  svctm  %util

vda              0.00    36.00  229.50  252.50 108512.00 107750.00  897.35    30.09  62.70  53.49  71.07  2.07 100.00


4.模拟磁盘空间填充

命令:blade create disk fill [选项参数]

参数

    --path string      需要填充的目录,默认值是 /

    --size string      需要填充的文件大小,单位是 M,取值是整数,例如 --size 1024

    --reserve string  保留磁盘大小,单位是MB。取值是不包含单位的正整数,例如 --reserve 1024。如果 size、percent、reserve 参数都存在,优先级是 percent > reserve > size

    --percent string  指定磁盘使用率,取值是不带%号的正整数,例如 --percent 80

    --retain-handle    是否保留填充

    --timeout string  设定运行时长,单位是秒,通用参数

样例:

# 执行实验之前,先看下 /home 所在磁盘的大小

df -h /home

Filesystem      Size  Used Avail Use% Mounted on

/dev/vda1        40G  4.0G  34G  11% /

# 执行磁盘填充,填充 40G,即达到磁盘满的效果(可用34G)

blade create disk fill --path /home --size 40000

# 返回结果

{"code":200,"success":true,"result":"7a3d53b0e91680d9"}

# 查看磁盘大小

df -h /home

Filesystem      Size  Used Avail Use% Mounted on

/dev/vda1        40G  40G    0 100% /

# 销毁实验

blade destroy 7a3d53b0e91680d9

{"code":200,"success":true,"result":"command: disk fill --debug false --help false --path /home --size 40000"}

# 查看磁盘大小

df -h /home

Filesystem      Size  Used Avail Use% Mounted on

/dev/vda1        40G  4.0G  34G  11% /

# 执行按百分比填充磁盘,并且保留填充磁盘的文件句柄

blade c disk fill --path /home --percent 80 --retain-handle

{"code":200,"success":true,"result":"f1fa65e70950d0eb"}

df -h

/dev/vda1        40G  30G  8.1G  79% /

# 查看文件句柄

lsof /home/chaos_filldisk.log.dat

COMMAND    PID USER  FD  TYPE DEVICE    SIZE/OFF  NODE NAME

chaos_fil 19297 root    3r  REG  253,1 17697865728 394174 /home/chaos_filldisk.log.dat

# 执行保留固定大小实验场景

blade c disk fill --path /home --reserve 1024

df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/vda1        40G  37G  1.1G  98% /

5.模拟网络延迟

命令:blade create network delay [选项参数]

参数

  --destination-ip string  目标 IP. 支持通过子网掩码来指定一个网段的IP地址, 例如 192.168.1.0/24. 则 192.168.1.0~192.168.1.255 都生效。你也可以指定固定的 IP,如 192.168.1.1 或者 192.168.1.1/32,也可以通过都号分隔多个参数,例如 192.168.1.1,192.168.2.1。

  --exclude-port string    排除掉的端口,默认会忽略掉通信的对端端口,目的是保留通信可用。可以指定多个,使用逗号分隔或者连接符表示范围,例如 22,8000 或者 8000-8010。 这个参数不能与 --local-port 或者 --remote-port 参数一起使用

  --exclude-ip string      排除受影响的 IP,支持通过子网掩码来指定一个网段的IP地址, 例如 192.168.1.0/24. 则 192.168.1.0~192.168.1.255 都生效。你也可以指定固定的 IP,如 192.168.1.1 或者 192.168.1.1/32,也可以通过都号分隔多个参数,例如 192.168.1.1,192.168.2.1。

  --interface string        网卡设备,例如 eth0 (必要参数)

  --local-port string      本地端口,一般是本机暴露服务的端口。可以指定多个,使用逗号分隔或者连接符表示范围,例如 80,8000-8080

  --offset string          延迟时间上下浮动的值, 单位是毫秒

  --remote-port string      远程端口,一般是要访问的外部暴露服务的端口。可以指定多个,使用逗号分隔或者连接符表示范围,例如 80,8000-8080

  --time string            延迟时间,单位是毫秒 (必要参数)

  --force                  强制覆盖已有的 tc 规则,请务必在明确之前的规则可覆盖的情况下使用

  --ignore-peer-port        针对添加 --exclude-port 参数,报 ss 命令找不到的情况下使用,忽略排除端口

  --timeout string          设定运行时长,单位是秒,通用参数

  样例:

# 访问本机 8080 和 8081 端口延迟 3 秒,延迟时间上下浮动 1 秒

blade create network delay --time 3000 --offset 1000 --interface eth0 --local-port 8080,8081

{"code":200,"success":true,"result":"9b4aa9fabe073624"}

# 可以在另一台相同网络内的机器通过 telnet 命令验证,即 telnet xxx.xxx.xxx.xxx 8080

# 销毁实验

blade destroy 9b4aa9fabe073624

# 本机访问外部 14.215.177.39 机器(ping www.baidu.com 获取到的 IP)80 端口延迟 3 秒

blade create network delay --time 3000 --interface eth0 --remote-port 80 --destination-ip 14.215.177.39

# 可在本机通过 telnet 14.215.177.39 80 命令验证

# 对整个网卡 eth0 做 5 秒延迟,排除 22 和 8000到8080 端口

blade create network delay --time 5000 --interface eth0 --exclude-port 22,8000-8080

# 会发现 22 端口和 8000 到 8080 端口不受影响,可在另一台相同网络内的机器通过分别 telnet xxx.xxx.xxx.xxx 8080 和 telnet xxx.xxx.xxx.xxx 8081 进行测试

6.模拟网络丢包率

命令: blade create network loss  [选项参数]

参数

  --destination-ip string  目标 IP. 支持通过子网掩码来指定一个网段的IP地址, 例如 192.168.1.0/24. 则 192.168.1.0~192.168.1.255 都生效。你也可以指定固定的 IP,如 192.168.1.1 或者 192.168.1.1/32,也可以通过都号分隔多个参数,例如 192.168.1.1,192.168.2.1。

  --exclude-port string    排除掉的端口,默认会忽略掉通信的对端端口,目的是保留通信可用。可以指定多个,使用逗号分隔或者连接符表示范围,例如 22,8000 或者 8000-8010。 这个参数不能与 --local-port 或者 --remote-port 参数一起使用

  --exclude-ip string      排除受影响的 IP,支持通过子网掩码来指定一个网段的IP地址, 例如 192.168.1.0/24. 则 192.168.1.0~192.168.1.255 都生效。你也可以指定固定的 IP,如 192.168.1.1 或者 192.168.1.1/32,也可以通过都号分隔多个参数,例如 192.168.1.1,192.168.2.1。

  --interface string        网卡设备,例如 eth0 (必要参数)

  --local-port string      本地端口,一般是本机暴露服务的端口。可以指定多个,使用逗号分隔或者连接符表示范围,例如 80,8000-8080

  --percent string          丢包百分比,取值在[0, 100]的正整数 (必要参数)

  --remote-port string      远程端口,一般是要访问的外部暴露服务的端口。可以指定多个,使用逗号分隔或者连接符表示范围,例如 80,8000-8080

  --force                  强制覆盖已有的 tc 规则,请务必在明确之前的规则可覆盖的情况下使用

  --ignore-peer-port        针对添加 --exclude-port 参数,报 ss 命令找不到的情况下使用,忽略排除端口

  --timeout string          设定运行时长,单位是秒,通用参数

样例:

# 访问本机 8080 和 8081 端口丢包率 70%

blade create network loss --percent 70 --interface eth0 --local-port 8080,8081

{"code":200,"success":true,"result":"b1cea124e2383848"}

# 可以在另一台相同网络内的机器通过 curl 命令验证,即 curl  xxx.xxx.xxx.xxx:8080,不使用 telnet 的原因是 telnet 内部有重试机制,影响实验验证。如果将 percent 的值设置为 100,可以使用 telnet 验证。

# 销毁实验

blade destroy b1cea124e2383848

# 本机访问外部 14.215.177.39 机器(ping www.baidu.com 获取到的 IP)80 端口丢包率 100%

blade create network loss --percent 100 --interface eth0 --remote-port 80 --destination-ip 14.215.177.39

# 可在本机通过 curl 14.215.177.39 命令验证,会发现访问不通。执行 curl 14.215.177.38 是通的。

# 对整个网卡 eth0 做 60% 的丢包,排除 22 和 8000到8080 端口

blade create network loss --percent 60 --interface eth0 --exclude-port 22,8000-8080

# 会发现 22 端口和 8000 到 8080 端口不受影响,可在另一台相同网络内的机器通过分别执行多次 curl xxx.xxx.xxx.xxx:8080 和 telnet xxx.xxx.xxx.xxx:8081 进行测试

# 实现整个网卡不可访问,不可访问时间 20 秒。执行完成下面命令后,当前的网络会中断掉,20 秒后恢复。切记!!勿忘 --timeout 参数

blade create network loss --percent 100 --interface eth0 --timeout 20

7.模拟网络包重复发送

  命令:blade create network duplicate [选项参数]

  参数

  --destination-ip string  目标 IP. 支持通过子网掩码来指定一个网段的IP地址, 例如 192.168.1.0/24. 则 192.168.1.0~192.168.1.255 都生效。你也可以指定固定的 IP,如 192.168.1.1 或者 192.168.1.1/32,也可以通过都号分隔多个参数,例如 192.168.1.1,192.168.2.1。

--exclude-port string    排除掉的端口,默认会忽略掉通信的对端端口,目的是保留通信可用。可以指定多个,使用逗号分隔或者连接符表示范围,例如 22,8000 或者 8000-8010。 这个参数不能与 --local-port 或者 --remote-port 参数一起使用

--exclude-ip string      排除受影响的 IP,支持通过子网掩码来指定一个网段的IP地址, 例如 192.168.1.0/24. 则 192.168.1.0~192.168.1.255 都生效。你也可以指定固定的 IP,如 192.168.1.1 或者 192.168.1.1/32,也可以通过都号分隔多个参数,例如 192.168.1.1,192.168.2.1。

--interface string        网卡设备,例如 eth0 (必要参数)

--local-port string      本地端口,一般是本机暴露服务的端口。可以指定多个,使用逗号分隔或者连接符表示范围,例如 80,8000-8080

--offset string          延迟时间上下浮动的值, 单位是毫秒

--remote-port string      远程端口,一般是要访问的外部暴露服务的端口。可以指定多个,使用逗号分隔或者连接符表示范围,例如 80,8000-8080

--percent                包重复百分比,取值是不带%号的正整数

--force                  强制覆盖已有的 tc 规则,请务必在明确之前的规则可覆盖的情况下使用

--ignore-peer-port        针对添加 --exclude-port 参数,报 ss 命令找不到的情况下使用,忽略排除端口

--timeout string          设定运行时长,单位是秒,通用参数

样例:

# 访问指定的 ip 请求包损坏,百分比 80%

blade create network corrupt --percent 80 --destination-ip 180.101.49.12 --interface eth0

ping 180.101.49.12

8.网络包重新排序

  命令:blade create network reorder [选项参数]

  参数

--destination-ip string  目标 IP. 支持通过子网掩码来指定一个网段的IP地址, 例如 192.168.1.0/24. 则 192.168.1.0~192.168.1.255 都生效。你也可以指定固定的 IP,如 192.168.1.1 或者 192.168.1.1/32,也可以通过都号分隔多个参数,例如 192.168.1.1,192.168.2.1。

--exclude-port string    排除掉的端口,默认会忽略掉通信的对端端口,目的是保留通信可用。可以指定多个,使用逗号分隔或者连接符表示范围,例如 22,8000 或者 8000-8010。 这个参数不能与 --local-port 或者 --remote-port 参数一起使用

--exclude-ip string      排除受影响的 IP,支持通过子网掩码来指定一个网段的IP地址, 例如 192.168.1.0/24. 则 192.168.1.0~192.168.1.255 都生效。你也可以指定固定的 IP,如 192.168.1.1 或者 192.168.1.1/32,也可以通过都号分隔多个参数,例如 192.168.1.1,192.168.2.1。

--interface string        网卡设备,例如 eth0 (必要参数)

--local-port string      本地端口,一般是本机暴露服务的端口。可以指定多个,使用逗号分隔或者连接符表示范围,例如 80,8000-8080

--offset string          延迟时间上下浮动的值, 单位是毫秒

--remote-port string      远程端口,一般是要访问的外部暴露服务的端口。可以指定多个,使用逗号分隔或者连接符表示范围,例如 80,8000-8080

--correlation string      和上一包的相关性,取值在 0~100,必要参数,例如 --correlation 70

--gap string              包序列大小,取值是正整数,例如 --gap 5

--percent string          立即发送百分比,取值是不带%号的正整数,例如 --percent 50,(必要参数)

--time string            网络包延迟时间,单位是毫秒,默认值是 10,取值时正整数

--force                  强制覆盖已有的 tc 规则,请务必在明确之前的规则可覆盖的情况下使用

--ignore-peer-port        针对添加 --exclude-port 参数,报 ss 命令找不到的情况下使用,忽略排除端口

--timeout string          设定运行时长,单位是秒,通用参数

样例:

# 访问指定的 ip 请求包乱序

blade c network reorder --correlation 80 --percent 50 --gap 2 --time 500 --interface eth0 --destination-ip 180.101.49.12

ping 180.101.49.12 -A

8.模拟停止进程

命令:blade create process kill

参数

  --process string      进程关键词,会在整个命令行中查找

  --process-cmd string  进程命令,只会在命令中查找

  --count string      限制杀掉进程的数量,0 表示无限制

  --signal string    指定杀进程的信号量,默认是 9,例如 --signal 15

  --timeout string  设定运行时长,单位是秒,通用参数

例子

# 删除包含 SimpleHTTPServer 关键词的进程

blade create process kill --process SimpleHTTPServer

# 删除 java 进程

blade create process kill --process-cmd java

# 指定信号量和本地端口杀进程

blade c process kill --local-port 8080 --signal 15

# 执行前

netstat -tanp | grep 8080

tcp        0      0 0.0.0.0:8080            0.0.0.0:*              LISTEN      10764/java

# 执行后此进程已不存在

9.模拟进程暂停

命令:blade create process stop [选项参数]

参数

--process string      进程关键词,会在整个命令行中查找

--process-cmd string  进程命令,只会在命令中查找

--timeout string  设定运行时长,单位是秒,通用参数

样例

# 暂停包含 SimpleHTTPServer 关键词的进程

blade create process stop --process SimpleHTTPServer

# 暂停 java 进程

blade create process stop --process-cmd java

备注: 查找不到 UID,无法恢复暂停的进程 A:手动执行 kill -CONT PIDS

10.模拟shell 脚本延迟执行

命令:blade create script delay [选项参数]

参数

--time string      延迟时间,单位是毫秒(必要参数)

--timeout string  设定运行时长,单位是秒,通用参数

--file string      脚本路径(必要参数)

--function-name string  脚本中的函数名(必要参数)

样例

#  blade create script delay --time 10000 --file test.sh --function-name start0

{"code":200,"success":true,"result":"b6a0f477b7fb1f4c"}

# 会在脚本中添加如下命令:

start0() {

sleep 10.000000

...

}

11.模拟脚本函数退出

命令:blade create script exit

参数

--exit-code string      退出码,默认值是 1

--exit-message string  退出信息

--timeout string  设定运行时长,单位是秒,通用参数

--file string      脚本路径(必要参数)

--function-name string  脚本中的函数名(必要参数)

样例

# blade create script exit --exit-code 1 --exit-message this-is-error-message --file test.sh --function-name start0

{"code":200,"success":true,"result":"d8a016b96380d7f3"}

# 执行脚本会触发场景。查看脚本修改如下:

start0() {

echo this-is-error-message;exit 1

...

}

12 命令执行状态查询

  命令:blade status [选项参数]

  参数

  --asc bool        默认值为 false,按 CreateTime 进行降序排序

  --limit string    查询实验数目限制,支持 OFFSET 子句,例如:limit 4,3 就表示从位置5开始,返回后3项

  --status string  实验状态,create 类型支持 Created|Success|Error|Destroyed 状态,prepare 类型支持 Created|Running|Error|Revoked 状态

  --target string  实验目标,例如:dubbo

  --type string    命令类型,attach|create|destroy|detach

  --uid string      prepare 或 experiment 的 uid

  -h, --help        查看 create 命令帮助

样例:

  # 查看 status 命令帮助文档

blade status -h

# 查询 uid 为 4c6b4a3fc313e1d4 的实验信息

blade status 4c6b4a3fc313e1d4

{

        "code": 200,

        "success": true,

        "result": {

            "Uid": "4c6b4a3fc313e1d4",

            "Command": "cpu",

            "SubCommand": "fullload",

            "Flag": " --cpu-percent=60",

            "Status": "Destroyed",

            "Error": "",

            "CreateTime": "2020-01-14T14:09:49.152708+08:00",

            "UpdateTime": "2020-01-14T14:10:45.605888+08:00"

        }

}

# 查询 create 类型命令的实验信息

blade status --type create

{

        "code": 200,

        "success": true,

        "result": [

            {

                "Uid": "4c6b4a3fc313e1d4",

                "Command": "cpu",

                "SubCommand": "fullload",

                "Flag": " --cpu-percent=60",

                "Status": "Destroyed",

                "Error": "",

                "CreateTime": "2020-01-14T14:09:49.152708+08:00",

                "UpdateTime": "2020-01-14T14:10:45.605888+08:00"

            }

        ]

}

# 查询 prepare 类型命令的实验信息

blade status --type prepare

{

        "code": 200,

        "success": true,

        "result": [

                {

                        "Uid": "e669d57f079a00cc",

                        "ProgramType": "jvm",

                        "Process": "dubbo.consumer",

                        "Port": "59688",

                        "Status": "Running",

                        "Error": "",

                        "CreateTime": "2019-03-29T16:19:37.284579975+08:00",

                        "UpdateTime": "2019-03-29T17:05:14.183382945+08:00"

                }

        ]

}

以上为常用命令使用方法,详细的使用方法请访问帮助文档:

chaosblade -中文使用说明

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,427评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,551评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,747评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,939评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,955评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,737评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,448评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,352评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,834评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,992评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,133评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,815评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,477评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,022评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,147评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,398评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,077评论 2 355

推荐阅读更多精彩内容