分页: 18/196 第一页 上页 13 14 15 16 17 18 19 20 21 22 下页 最后页 [ 显示模式: 摘要 | 列表 ]
Jun 7
1 Apache附带的工具ab

ab的全称是ApacheBench,是Apache附带的一个小工具,专门用于HTTP Server的benchmark testing,可以同时模拟多个并发请求。

在这个例子的一开始,我执行了这样一个命令ab -n 10 -c 10http://www.google.com/。这个命令的意思是启动ab,向www.google.com发送10个请求(-n 10) ,并每次发送10个请求(-c 10) ——也就是说一次都发过去了。

apache ab做重复压力测试不错,但是每次只能测试一个链接

D:\apahce\bin>ab.exe -n 10 -c 10 http://www.google.com/
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarking www.google.com (be patient).....done

Server Software: gws
Server Hostname: www.google.com
Server Port: 80

Document Path: /
Document Length: 4941 bytes

Concurrency Level: 10
Time taken for tests: 5.218750 seconds//**整个测试持续的时间**
Complete requests: 10//**完成的请求数量**
Failed requests: 9//**失败的请求数量**
(Connect: 0, Length: 9, Exceptions: 0)
Write errors: 0
Total transferred: 52730 bytes**整个场景中的网络传输量**
HTML transferred: 49540 bytes**整个场景中的HTML内容传输量**
Requests per second: 1.92 [#/sec] (mean) **大家最关心的指标之一,相当于LR中的每秒事务数,后面括号中的mean表示这是一个平均值**
Time per request: 5218.750 [ms] (mean) *大家最关心的指标之二,相当于LR中的平均事务响应时间,后面括号中的mean表示这是一个平均值**
Time per request: 521.875 [ms] (mean, across all concurrent requests)
Transfer rate: 9.77 [Kbytes/sec] received*平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题**

Connection Times (ms)
min mean[+/-sd] median max
Connect: 187 488 257.6 437 921
Processing: 312 1673 1204.4 1547 3985
Waiting: 296 1668 1206.3 1546 3984
Total: 593 2162 1432.6 1890 4906
**下面的内容为整个场景中所有请求的响应情况。在场景中每个请求都有一个响应时间,其中50%的用户响应时间小于**毫秒,60%的用户响应时间小于**毫秒,最大的响应时间小于 **毫秒**
Percentage of the requests served within a certain time (ms)
50% 1890
66% 2406
75% 3093
80% 3984
90% 4906
95% 4906
98% 4906
99% 4906
100% 4906 (longest request)

实际测试

Server Software: Apache/2.2.3
Server Hostname: www.netnov.cn
Server Port: 80

Document Path: /
Document Length: 18958 bytes

Concurrency Level: 10
Time taken for tests: 8.949 seconds
Complete requests: 100
Failed requests: 0
Write errors: 0
Total transferred: 1912100 bytes
HTML transferred: 1895800 bytes
Requests per second: 11.17 [#/sec] (mean)
Time per request: 894.906 [ms] (mean)
Time per request: 89.491 [ms] (mean, across all concurrent requests)
Transfer rate: 208.66 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 78 87 8.9 94 109
Processing: 219 752 122.2 781 875
Waiting: 219 510 179.9 515 843
Total: 312 839 121.3 859 953

Percentage of the requests served within a certain time (ms)
50% 859
66% 859
75% 875
80% 890
90% 921
95% 937
98% 953
99% 953
100% 953 (longest request)

-----------------------------------------------------------------------------


格式: ./ab [options] [http://]hostname[:port]/path
参数:
-n requests Number of requests to perform
//在测试会话中所执行的请求个数。默认时,仅执行一个请求
-c concurrency Number of multiple requests to make
//一次产生的请求个数。默认是一次一个。
-t timelimit Seconds to max. wait for responses
//测试所进行的最大秒数。其内部隐含值是-n 50000。它可以使对服务器的测试限制在一个固定的总时间以内。默认时,没有时间限制。
-p postfile File containing data to POST
//包含了需要POST的数据的文件.
-T content-type Content-type header for POSTing
//POST数据所使用的Content-type头信息。
-v verbosity How much troubleshooting info to print
//设置显示信息的详细程度 - 4或更大值会显示头信息, 3或更大值可以显示响应代码(404, 200等), 2或更大值可以显示警告和其他信息。 -V 显示版本号并退出。
-w Print out results in HTML tables
//以HTML表的格式输出结果。默认时,它是白色背景的两列宽度的一张表。
-i Use HEAD instead of GET
// 执行HEAD请求,而不是GET。
-x attributes String to insert as table attributes
//
-y attributes String to insert as tr attributes
//
-z attributes String to insert as td or th attributes
//
-C attribute Add cookie, eg. 'Apache=1234. (repeatable)
//-C cookie-name=value 对请求附加一个Cookie:行。其典型形式是name=value的一个参数对。此参数可以重复。
-H attribute Add Arbitrary header line, eg. 'Accept-Encoding: gzip'
Inserted after all normal header lines. (repeatable)
-A attribute Add Basic WWW Authentication, the attributes
are a colon separated username and password.
-P attribute Add Basic Proxy Authentication, the attributes
are a colon separated username and password.
//-P proxy-auth-username:password 对一个中转代理提供BASIC认证信任。用户名和密码由一个:隔开,并以base64编码形式发送。无论服务器是否需要(即, 是否发送了401认证需求代码),此字符串都会被发送。
-X proxy:port Proxyserver and port number to use
-V Print version number and exit
-k Use HTTP KeepAlive feature
-d Do not show percentiles served table.
-S Do not show confidence estimators and warnings.
-g filename Output collected data to gnuplot format file.
-e filename Output CSV file with percentages served
-h Display usage information (this message)

2 webbench

wget http://blog.s135.com/soft/linux/webbench/webbench-1.5.tar.gz
tar zxvf webbench-1.5.tar.gz
cd webbench-1.5
make && make install

#webbench -c 100 -t 10 http://192.168.200.100/info.php

参数说明:-c表示并发数,-t表示持续时间(秒)

root@ubuntu-desktop:/etc/nginx/sites-available# webbench -c 100 -t 10 http://192.168.200.100/info.php
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

Benchmarking: GET http://192.168.200.100/info.php
100 clients, running 10 sec.

Speed=19032 pages/min, 18074373 bytes/sec.
Requests: 3172 susceed, 0 failed.

3 Siege

apache ab做重复压力测试不错,但是每次只能测试一个链接

如何测试一组链接(比如从日志中导出的1个小时的日志,做真实压力测试),后来找到了这个:
Siege是一个压力测试和评测工具,设计用于WEB开发这评估应用在压力下的承受能力:可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。

下载/安装
Siege时一个开放源代码项目:http://www.joedog.org/siege/

下载:
wget ftp://sid.joedog.org/pub/siege/siege-latest.tar.gz

安装:
#./configure ; make
#make install

#siege -help (如果有help出现,则已经安装成功)

siege包含了一组压力测试工具:
SIEGE (1) Siege是一个HTTP压力测试和评测工具.
使用样例:
任务列表:www.chedong.com.url文件
http://www.chedong.com/tech/
http://www.chedong.com/tech/acdsee.html
http://www.chedong.com/tech/ant.html
http://www.chedong.com/tech/apache_install.html
http://www.chedong.com/tech/awstats.html
http://www.chedong.com/tech/cache.html
http://www.chedong.com/tech/click.html
http://www.chedong.com/tech/cms.html
http://www.chedong.com/tech/compress.html
http://www.chedong.com/tech/cvs_card.html
http://www.chedong.com/tech/default.html
http://www.chedong.com/tech/dev.html
http://www.chedong.com/tech/gnu.html
….
siege -c 20 -r 2 -f www.chedong.com.url
参数说明:
-c 20 并发20个用户
-r 2 重复循环2次
-f www.chedong.com.url 任务列表:URL列表

输出样例:

** Siege 2.59
** Preparing 20 concurrent users for battle. 这次“战斗”准备了20个并发用户
The server is now under siege.. done. 服务在“围攻”测试中:
Transactions: 40 hits 完成40次处理
Availability: 100.00 % 成功率
Elapsed time: 7.67 secs 总共用时
Data transferred: 877340 bytes 共数据传输:877340字节
Response time: 1.65 secs 相应用时1.65秒:显示网络连接的速度
Transaction rate: 5.22 trans/sec 平均每秒完成5.22次处理:表示服务器后台处理的速度
Throughput: 114385.92 bytes/sec 平均每秒传送数据:114385.92字节
Concurrency: 8.59 最高并发数 8.59
Successful transactions: 40 成功处理次数
Failed transactions: 0 失败处理次数


辅助工具:
增量压力测试:
为了方便增量压力测试,siege还包含了一些辅助工具:
bombardment (1)
是一个辅助工具:用于按照增量用户压力测试:
使用样例:
bombardment urlfile.txt 5 3 4 1
初始化URL列表:urlfile.txt
初始化为:5个用户
每次增加:3个用户
运行:4次
每个客户端之间的延迟为:1秒

输出成CSV格式:
siege2csv.pl (1)
siege2csv.pl将bombardment的输出变成CSV格式:
Time Data Transferred Response Time Transaction Rate Throughput Concurrency Code 200 (note that this is horribly broken.)
242 60.22 603064 0.02 4.02 10014.35 0.08
605 59.98 1507660 0.01 10.09 25136.05 0.12
938 59.98 2337496 0.02 15.64 38971.26 0.26
1157 60 2883244 0.04 19.28 48054.07 0.78

4 http_load

下载地址:http://www.acme.com/software/http_load/http_load-12mar2006.tar.gz

程序非常小,解压后也不到100K 居家旅行 携带方便 呵呵

http_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载。但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般不会把客户机搞死。可以可以测试HTTPS类的网站请求。

命令格式:http_load -p 并发访问进程数 -s 访问时间 需要访问的URL文件
例如:
引用
http_load -p 30 -s 60 urllist.txt

准 备URL文件:tst.list,文件格式是每行一个URL,URL最好超过50-100个测试效果比较好,另外,测试结果中主要的指标是 fetches/sec 这个选项,即服务器每秒能够响应的查询次数,用这个指标来衡量性能。似乎比 apache的ab准确率要高一些,也更有说服力一些。

官方的例子:
引用

% ./http_load -rate 10 -seconds 60 urllist.txt
49 fetches, 4 max parallel, 289884 bytes, in 10.0148 seconds
5916 mean bytes/connection
4.89274 fetches/sec, 28945.5 bytes/sec
msecs/connect: 28.8932 mean, 44.243 max, 24.488 min
msecs/first-response: 63.5362 mean, 81.624 max, 57.803 min

4.89274 fetches/sec 这个值得就是说服务器每秒能够响应的查询次数为4.8左右
这个值得是根据 49 fetches / 10.0148 seconds 秒计算出来的

5 Web Application Stress 【附下载】
http://www.microsoft.com/downloads/details.aspx?FamilyID=e2c0585a-062a-439e-a67d-75a89aa36495&displaylang=en

说明:

1. 在“settings”的功能设置中,一个是Stress level (threads)这里是指定程序在后台用多少线程进行请求,也就是相当于模拟多少个客户机的连接,更加形象的就是说设置多少轰炸的线程数。一般填写 500~1000,因为这个线程数是根据本机的承受力来设置的,如果你对自己的机器配置有足够信心的话,那么设置的越高,轰炸的效果越好。

2.在“Test Run Time”中来指定一次压力测试需要持续的时间,分为天、小时、分、秒几个单位级别,你根据实际情况来设置吧!

使用:

在工具中点右键,选择Add命令,增加了一个新的测试项目:New script,对它进行设置,在主选项中的server中填写要测试的服务器的IP地址[192.168.200.100]。在下方选择测试的Web连接方式,这里的方式Verb选择 get,path选择要测试的Web页面路径[/info.php],

在“Settings”的功能设置中将Stress level (threads)线程数设置为1000。完毕后,点工具中的灰色三角按钮即可进行测试(如图4)。测试完毕,等待朋友把任务管理器以及连接查看的截图发过来!

攻 击开始后,朋友从任务管理器中可以看到CPU使用率已经达到100%,损耗率达到最大。在CMD窗口中使用命令netstat -an,可以看到我的IP地址在朋友服务器上的80端口进行了非常多的连接。而且它的Web网站已经打不开了,提示过多用户连接,达到了跟 D.O.S攻击一样的目的。

数据分析:
选择“View”菜单下的“Reports”命令,或单击工具栏上的 按钮,打开报告窗口,在左侧列表中展开相应的报告。

检查Socket Errors部分是否有任何的socket有关的错误(值不为0)。

Socket Errors
--------------------------------------------------------------------------------
Connect: 406
Send: 0
Recv: 306
Timeouts: 0

这里列出每种socket错误的解释:Connect——客户端不能与服务器取得连接的次数。如果这个值偏高,检查在客户端与服务器之间产生的任何潜在的错误。从每个客户端Ping服务器或telnet服务器的端口80验证你得到正确的回应;Send——客户端不能正确发送数据到服务器的次数。如果这个值偏高,检查服务器是否正确地工作着。在客户端打开一个浏览器然后手工点击站点页面验证站点正确地工作着;Recv——客户端不能正确从服务器接收数据的次数。如果这个值偏高,执行和Send错误相同的操作,还要检查一下如果你减低负载系数,错误是否跟着减少;Timeouts——超时的线程的数目,而且随后就关闭了。如果这个值偏高,在客户端打开一个浏览器,然后手工点击站点页面验证是否即使只有一个用户你的程序也会很慢。再做一个不同负载系数的压力测试,看看程序的潜在特征。

Result Codes
Code Description Count
================================================================================
200 OK 11058
NA HTTP result code not given 306
如果“socket”错误很低或为0,在左侧的报告列表中找到“Result Codes”部分。检查一下是否所有结果代码都是200,200表示所有请求都被服务器成功地返回。如果找到大于或等于400的结果,单击报告列表中的 “Page Data”节点,展开所有项目,查看每个脚本项在右边窗口页面数据的报告,找出出现错误的项目。
Tags: , ,
Jun 7
今天查看系统日志发现大量的nf_conntrack: table full, dropping packet. 错误
cat /var/log/messages | more
Jun  7 09:52:05 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:05 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:05 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:05 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:05 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:05 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:05 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:05 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:10 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:10 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:10 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:10 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:10 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:10 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:10 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:10 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:10 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:10 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:15 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:15 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:15 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:15 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:15 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:15 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:15 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:15 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:15 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:15 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:23 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:23 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:23 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:23 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:23 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:23 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:23 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:23 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:23 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:23 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:30 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:30 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:30 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:30 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:30 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:30 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:30 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:30 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:30 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:30 localhost kernel: nf_conntrack: table full, dropping packet.
解决办法:
vi /etc/sysctl.conf
加入:
net.nf_conntrack_max = 655350
net.netfilter.nf_conntrack_tcp_timeout_established = 1200
CENTOS 6.1或以上版本使用:
net.netfilter.nf_conntrack_max = 655350
net.netfilter.nf_conntrack_tcp_timeout_established = 1200
保存后执行 sysctl -p 使之生效,然后观察该错误是不是没有了。
Apr 24
如果 你愿意

我能像守护 家人 一般

好好的与你一同慢慢老去

活着一生不离不弃

死了也一同 埋在土里长眠下去

昼夜不分不离

如果 你愿意

我会 终生与你相恋相依

灵魂和你 拴在一起

永远也不会 把你在美好的春天里残忍的抛弃

如果 你愿意

我会让你 了解我心中所有的困惑和稀有的丁点秘密

明了我的过去

不用惶惶恐恐艰难度日

如果 你愿意

在我 人生旅途中 永远铭记

男人是需要引导和鼓励 而非老婆的鄙弃

我们未来的生活一定会充满一个又一个的奇迹
点击在新窗口中浏览此图片
Tags:
Apr 6
使用权限
所有用户
语法格式
打开一个编辑器去修改或重新执行以前输入的命令  
fc [ -r ] [ -e Editor ] [ First [ Last ] ]
生成一个以前输入的命令的列表  
fc -l [ -n ] [ -r ] [ First [ Last ] ]
生成带执行时间的以前输入的命令的列表  
fc -t [ -n ] [ -r ] [ First [ Last ] ]  
重新执行以前输入的命令
fc -s [ Old= New ] [ First ]

使用说明

fc 命令显示了历史命令文件内容或调用一个编辑器去修改并重新执行以前在 shell 中输入的命令。 以下环境变量会影响 fc 命令的执行:  
EXTENDED_HISTORY 用来控制历史文件中命令执行时间的记录。                
                     如果变量设置为 ON,则记录时间,否则不记录时间。  
FCEDIT 当 shell 扩展该环境变量时,该变量确定了 -e editor 变量的缺省值。      
        如果环境变量 FCEDIT 为空值或没有被设置,则缺省使用 ed 编辑器。  
HISTDATEFMT 它用于控制 fc –t 命令显示的时间格式。            
               例如,如果 HISTDATEFMT=%Y,则 fc -t 将显示执行命令的年份。格式与 date 命令所做的相似。  
HISTFILE 确定历史命令文件的路径名。          
         如果环境变量 HISTFILE 没有被设置,则 shell 可能会尝试访问或创建在用户主目录中的          
         .sh_history 文件。 HISTSIZE 确定一个十进制数值,该数值表示了可以访问的以前输入的命令的数量限值。 如果没有设置该变量,则使用缺省值 128。

主要参数

-e Editor 使用指定的编辑器编辑命令。 Editor 参数应是一个命令名称。该命令用 PATH 环境变量指定位置。 当没有指定 -e 标志时,环境变量 FCEDIT 中的值被用作缺省值。 如果环境变量 FCEDIT 是空值或   没有设置,则使用 ed 编辑器。  

-l (L 的小写)列出了历史文件中的命令。不调用编辑器去修改它们。 按照 First 和 Last 参数所指定的顺序写命令,就象 -r 标志所作用的,在每一个命令的前面有一个命令编号。  

-n 当与 -l 标志一起使用时,隐藏命令编号。  

-r 逆转所列出命令的顺序(当使用 -l 标志)或者逆转所编辑的命令顺序(当没有指定 -l 标志时)。  

-s 不调用编辑器重新执行一个命令。如果也没有指定 First参数,则 -s 标志重新执行前一个命令。  

-t 在历史文件中列出命令及其执行时间。工作过程与 -l 标志类似,但是还显示命令的执行时间。 First or Last 选择要列出或编辑的命令。HISTSIZE 环境变量值确定了能够访问到的以前所输入命令的数量。

First 参数和 Last 参数必须具有以下数值中的一个:

[+] Number表示一个特定的命令编号。-l 标志可以显示命令编号。缺省值为一个 +(加符号)字符。

-Number表示一个以前执行的命令,由存储在历史列表中的命令编号指定。例如,-1 指出了前一个刚执行过的命令。

String 指出了最近所输入的命令,该命令以指定的字符串开头。 如果指定了 Old=New 参数但没有指定 -s 标志,则来自 First 参数的字符串中不能包含一个嵌入的 =(等于符号)。 当使用 -s 标志时,省略 First 参数将导致使用前一个命令。

应用实例

要对最近所使用的命令调用环境变量 FCEDIT 所定义的编辑器(缺省的编辑器是 /usr/bin/ed),请输入:
fc 当完成编辑之后,执行该命令。
要列出执行过的前两个命令,请输入:
fc -l -2
要找到以 cc 字符开始的命令,且将 foo 更改为 bar,并显示和执行该命令,请输入:
fc -s foo=bar cc
要列出先前执行的命令及其执行时间,请输入:
fc –t
Tags: , ,
Mar 26

“走饭”的宿舍贴上了封条;
  抑郁症少女“走饭”用青春这个令人感伤的字眼给无数人留下遗憾。

  在现实中没有多少人能清晰地知道她曾怎样地生活过。一个普通的少女,在毕业前选择了在虚拟的世界里与自己告别,尽管之前有无数次的告别,而这次却是毅然决然。

  南京金陵科技学院龙蟠学院北区4号宿舍楼5层B区的04515室,靠近走廊最西边。往常走廊的西头总会有一些女生用低沉的声音没完没了地打电话,以至于有人不得不贴出“为保证大多数人的休息,请到别处打电话”的告示,但现在这已派不上用场……这些天,没有人再停留在那里打电话。

  阳光透过西头的玻璃窗,像往常一样在走廊里拉出长长的影子,“04515”室的门紧闭着,一张封条上印着显眼的红色“封”字,时间是2012年3月19日。住在这里的小薇和其他两个室友也一直没再进过“04515”室的门,因为这个曾无比熟悉的房间,到处都留下了一位名叫马洁的室友影子,难过和些许恐惧令她们不愿再触及任何与她有关的事……

  曾多次给舍友说过想死

  作为一起住过近四年的室友,小薇(化名)和其他两名室友曾经很多次听到马洁谈到过自己想死的话题,多数时间,谈话是在一种轻松的环境中进行的,而马洁会在不经意中蹦出“死”这个字眼。在“少年不识愁滋味,为赋新词强说愁”的嬉闹下,小薇甚至会朝马洁喊,“喂,要死可以,但不能在宿舍噢。”之后,大家又会闹成一片。

  讨论“死”这个话题在少女们看来是一种资本,小薇和室友都知道马洁是个易伤感的女孩,她们已习惯马洁的沉默、忧郁,甚至是冷不丁冒出的听不懂的话语。直到3月18日,当小薇和其他两个室友得知马洁在宿舍里自缢身亡的消息时,她们才清楚,这个在同一间房屋里曾一起生活过近四年的女孩,每一次谈论“死”时其实都是认真的,也直到马洁的微博高频曝光后,小薇和同学才知道,马洁有一个网名叫“走饭”。

  如果不是她最后的微博告诉所有人,长期以来她一直在和一种叫做“抑郁症”的心理疾病做着斗争,小薇也永远不会明白,那个平日里她们总喜欢挂在嘴边的“我抑郁了”的“抑郁”,和马洁的“抑郁”是那么的不同。

  再有一周就是论文答辩的日子

  如果不是“走饭”的微博走红,琳琳不会回忆起“04515”室曾经住着一个和她一样青春却抑郁的女孩,“没想到走饭是和我住同一个楼层,”琳琳说。琳琳是08级会计系大学生,她的宿舍就在“04515”室的斜对面。而在整个楼层B区,会计系的女生占了多数。马洁是08级金融系的学生,她的同学大都住在楼层的A区,也就是说,马洁和三名室友的周围住的都是外系的学生。

  琳琳对马洁的唯一一次印象是在水房,且充满了不确定性,“一米六以上的个头,走路慢悠悠,低着头不看人,估计就是她。因为接水时,这个女孩一直盯着水龙头看,直到水溢了也没有留意到。”之后,琳琳再也没有见过这个女孩,而那次唯一的碰面也并没有让她看清马洁到底长啥样,“肯定是特安静,不经常出出进进的那类人,”琳琳说。同楼层的女生们也很少能记起马洁的模样。

  就在一周前,北区的4号宿舍楼还很清净,因为大四学生在今年3月开学后大都出去实习,很多人都不回来住,“走饭”马洁正是在这样的特殊时间选择和同学老师告别,去往另一个世界。而从3月19日开始,4号楼重新变得热闹起来,因为3月24日是龙蟠学院各系08级学生毕业论文答辩的日子。

  她从不主动和宿舍管理员打招呼

  4号楼的宿舍管理员阿芬(化名)是其中一个发现马洁自缢的人,敲门无人应答,后来用钥匙打开的“04515”室里,尼龙绳的一头挽着马洁的头,另一头悬挂在上铺的扶手上。在从绳索上放下马洁的时候,阿芬感觉到了她腋下尚存的体温,她希望这个女孩能被救活。

  最先发现马洁异常的是她的哥哥,如果没有特殊的情况,女生宿舍的查房都会在晚上九点半,3月17日晚,大约九点的时候,自称是马洁哥哥的男子来到4号楼告诉管理员,自己的妹妹马洁在晚上七点左右给家人打完电话后就再也联系不到了。

  4号楼的另一名管理员虞巧珠对马洁有着深刻的印象:每次虞巧珠查房时,马洁宿舍的其他三个女孩都会主动问“阿姨好,”唯独马洁不会,她从不主动和宿舍的管理员打招呼。大多数时候,她都会在自己床下的电脑桌上玩电脑。有时虞巧珠会不自觉地走到她跟前轻轻摁一下她的肩膀提醒“不要太贪玩”时,马洁才会抬起头看虞巧珠,而时常,这个女孩的眼神中缺乏一种生动的气息,也总是处在一种游离的状态。

  4号楼因为线路老化,不允许女学生用大功率的电器,而虞巧珠记得,一次查房,她发现马洁在用自己的烧水壶烧水,虞巧珠准备没收时,马洁却恳求她不要拿走烧水壶。虞巧珠告诉马洁,这次可以不没收,但她需要赶紧把烧水壶拿回家去,如果第二次发现,不仅要没收还要交给学校去处理。马洁出事后,虞巧珠再一次进“04515”室时发现,那个烧水壶仍旧没有被马洁拿回家,里面还有半壶水没有被用完。

  “没有一个可以驻扎的地方”

  “走饭”马洁就读的南京科技学院龙蟠学院系一所“三本”学院,就读于金融系的女生占了大多数。在学校对外公布的有关“走饭”的信息中,很多人对于这个女孩的了解只限于,“龙蟠学院2008级金融专业大四在读本科生”、“南京六合人”、“学习成绩中上”、“无恋爱史”,对于“走饭”的猜测和惋惜绝大多数是来自网友的微博。

  而截至3月25日,“走饭”的微博粉丝数已增加到了12万多人,此前,这一数字是3万人。网络的转帖、网友的评述为这个逝去的青春女孩更增添了一份神秘感,很多人发现,这位近乎狂热的“笔迷”,对明星既有着发自内心的崇拜,却时而又陷入情绪的低谷难以正视自己的热情,这也使得这个青春女孩的朋友更多的来自虚拟的网络,在现实中,她的同学、老师离她似乎遥远。

  一位配合警方调查“走饭”自缢事件的工作人员表示,近四年来,“走饭”同班同学、指导老师均不知道“走饭”是一位重症抑郁症患者,就连室友都不知道多年来“走饭”在看医生和秘密服药。

  “有一点可以肯定,走饭在生前和她母亲的关系较为亲密,”这位工作人员告诉记者,在警方调查的过程中,其母曾给“走饭”发过一条短信,“你要像保护自己的钱包一样保护好自己的病历。”而关于这条短信的具体内容,江宁公安警方拒绝了记者的采访。

  “没有一个可驻扎的地方,到每一个地方那儿的人都对我说:你得走。就连回家妈妈都说:你不能留在这儿。每一刻看着那些离去的期限我就觉得孤立无依。”3月14日,在选择离开的前三天,“走饭”在微博上留下这样的话,字句间流露出对家的向往。

  那些微博其实是一条条死亡呼救信号

  3月23日,是龙蟠学院08级毕业生合影的时间,学院的图书馆门前,08级“本三”金融系合影的镜头中唯独没有“走饭”的身影。

  “不想再提到她”、“让她安静地走吧”,面对媒体,“走饭”的同学基本选择了沉默。“走饭的家在农村,家庭状况并不好,她考上大学不容易,她母亲一直希望她上完大学找个好工作出人头地,隐瞒走饭的病情是为了保护她,请大家理解她家人的做法。”走饭的同学木木(化名)说,实习期间,走饭选择在学校附近的东亚银行上班,也可能是银行的工作氛围让她很不适应,虽然实习的同学都会讲自己的体验,“但走饭从不提及工作,她在网络的虚拟世界里抒发着自己。”

  有专家分析,“走饭”临终前的数条微博其实是一条条死亡呼救信号,但遗憾的是并未引起人们的关注。“但我们是否真的能完全依赖虚拟的网络来拯救自己或他人的生命,这还是一个值得商榷的问题。”教育部生命教育委员会中心主任蒋惠芳说,“人与人之间如果不能通过心和心的交流,不能建立一种信赖的交往关系,仅凭虚拟空间里一两句鼓舞的话,很难让一个对生活丧失信心的人重拾热情,尤其是一个重症抑郁症患者。”

  蒋惠芳称,网络只是一个传递工具,它不应成为人依赖此生活的主要途径,尤其是现在的年轻人,必须在现实的生活中有自己信任的朋友,“这种现实信任关系的建立对于每个人来说本身就是一种信心的提升,沉溺于网络的人恰好丧失了这种品质。”

  “走饭”事件之后,龙蟠学院宣传栏里焕然一新,内容均涉及“大学生心理健康”、“抑郁症”、“焦虑症”、“强迫症”,而北区4号楼宿舍,原本空阔的草坪上不知何时栽满了桃树,似在记录一个叫“走饭”的青春女孩曾经来过。

  有说有笑却突然崩溃

  警惕“阳光型抑郁”

  “见过婴儿心花怒放之笑,只觉成长格外悲凉。”在微博之前,很少有人这样关注一个普通人离开人世。“走饭”就是这个普通人。

  “我有抑郁症,所以就去死一死,没什么重要的原因,大家不必在意我的离开。拜拜啦。”2012年3月18日上午10时54分,一条来自网友“走饭”的微博消息引起轰动,众多网友相继转发。3月19日凌晨1时32分,警方证实,发布该条微博的女生已于3月18日凌晨自杀身亡。她选择了可延迟定时发送工具“皮皮时光机”发送了遗言,当大家看到微博时,她已经离开这个世界。

  爱美剧,爱睡懒觉,爱吃零食,爱刷微博,“笔亲”(周笔畅粉丝),嚷着要减肥这是“走饭”在过去两年多所发布的微博里所透露出来的信息,而她留下的1896条微博则令网友震惊于她的才气与绝望。“没有愈走愈近就不会有渐行渐远这回事了。”“你们都如同那闪耀的星星,因为我调成了夜间模式。”“躲了一辈子的雨,雨会不会很伤心。”“最近的记忆力,好像在随着我的每一次呼吸,在逐渐消逝,想靠药物来挽回,可是我连吃药都不记得。”

  一些关注“走饭”的网友表示,之前只是觉得这个女孩的博文显得颓废,但有时也会发一些幽默的段子,没想到她会走上绝路。对此,广州曼德拉咨询中心心理专家武文介绍说,抑郁症分为轻度、中度、重度,“轻度抑郁表现为容易不开心,但很快会恢复过来;而中度抑郁是情绪反复,有时会萌生轻生的念头,但不会付诸行动;绝大部分将想死念头付诸行动实施的,是重度抑郁症患者,需要到医院进行药物治疗”。

  武文还指出,“抑郁症患者中,隐藏得最深、最难发现的就是"阳光型抑郁症"。患者平时表面坚强,与人交流时有说有笑,不会流露出抑郁症状,但这种类型的患者最令人担忧,因为一旦情绪崩溃,他们就很可能走向极端。”据《新快报》来源华商报)
Tags: ,
分页: 18/196 第一页 上页 13 14 15 16 17 18 19 20 21 22 下页 最后页 [ 显示模式: 摘要 | 列表 ]