分类: 服务器预览模式: 普通 | 列表
   windows2003当服务器。昨天突然发现网站上不去了。赶去网络间发现服务器能ping通网关,也能ping通其他电脑。还能上网,但是别的电脑就不能ping通我们的服务器。重启了一下服务器,发现“Generic host process for win32 services遇到问题需要关..”啥的。时间早上8:00.没理它。因为问题解决了。电脑可以我们的网站了。觉得问题很奇怪。。。过了1个小时,再访问我们的网站,发现又不能浏览了。同样不能ping通我们的服务器。看来,服务器的不工作不是偶然。

   下楼,重启电脑,同样发现了以前没有的“Generic host process for win32 services遇到问题需要关闭..”的提示。时间应该在重启电脑后50分钟左右。而且服务器仍然可以上网,可以ping通网关。我查看了事件查看器下面的应用程序的日志,发现出现“Generic host process for win32 services遇到问题需要关..”提示的时间,和一个错误的时间吻合。而且这个错误以前没见过的(因为每天都一堆一堆的错误,好在服务器还运行呢)。
事件类型:    信息
事件来源:    Application Error

查看更多...

分类:服务器 | 固定链接 | 评论: 451 | 引用: 0 | 查看次数: 7749
嵌入式数据库Sqlite3 Linux(CentOS)环境编译、使用介绍

环境:X86 PC、CentOS

编译安装步骤:

查看更多...

分类:服务器 | 固定链接 | 评论: 346 | 引用: 0 | 查看次数: 9963

mysql宕掉的问题解决

mysql宕掉的问题解决

可能原因是数据过多导致。

mysql 命令可以识别 但是进去后不能执行相关的mysql命令,

查看更多...

分类:服务器 | 固定链接 | 评论: 142 | 引用: 0 | 查看次数: 3294

mysql ibdata1文件的缩小操作

mysql ibdata1文件的缩小操作

最近发现MYSQL 的碎片狂大,在一张有上千万的表空间里面碎片占用十分厉害,但是单独的用alert table table_name engine=innodb 基本无法执行,因为表实在是过大,ALERT方法适合一些中小型的数据库。所以最后的办法就是导入导出的步骤

mysql ibdata1存放数据,索引等,是MYSQL的最主要的数据。

查看更多...

分类:服务器 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 1571

 在尝试从本地安全性数据库(%windir%\security\database\secedit.sdb)中检索这些设置时返回的错误为:参数不正确。 

所有本地安全性设置都将被显示,但是不会指出一个给定的安全性设置是否由组策略定义。 
所有由此用户界面改动的本地安全性设置都可能随后被域级的策略覆盖。 

按照网上的办法如下: 
解决方案: 

1.
切换到命令提示符状态。 
2.
执行“esentutl /k %windir%\Security\Database\Secedit.sdb”“esentutl /g %windir%\Security\Database\Secedit.sdb”secedit.sdb进行检查。 
3.
手工备份要修复的数据库文件。 
4.
执行“esentutl /p %windir%\Security\Database\Secedit.sdb”进行修复,系统会弹出Warning提示框: 
"You should only run Repair on damaged or corrupted databases.Repair will not apply information in the transaction log files to the database,and may cause information to be lost.Do you wish to proceed?" 
单击OK,开始修复。 

执行后显示内容:
Microsoft(R) Windows(R) Database Utilities
Version 5.2
Copyright (C) Microsoft Corporation. All Rights Reserved.

Initiating REPAIR mode...
        Database: C:\WINDOWS\Security\Database\Secedit.sdb
  Temp. Database: TEMPREPAIR4884.EDB

Checking database integrity.

The database is not up-to-date. This operation may find that
this database is corrupt because data from the log files has
yet to be placed in the database.

To ensure the database is up-to-date please use the 'Recovery' operation.


                     Scanning Status (% complete)

          0    10   20   30   40   50   60   70   80   90  100
          |----|----|----|----|----|----|----|----|----|----|
          ...................................................


Integrity check successful.

Note:
  It is recommended that you immediately perform a full backup
  of this database. If you restore a backup made before the
  repair, the database will be rolled back to the state
  it was in at the time of that backup.

Operation completed successfully in 13.328 seconds.

分类:服务器 | 固定链接 | 评论: 38 | 引用: 0 | 查看次数: 1832

Zend Optimizer 出错造成站点无法访问

 今天有朋友的服务器出现站点无法访问的状况,登录进去看到Apache占用了服务器的大部分内存导致服务器剩余内存很少,如果重启Apache的话依然无法释放内存,只有重启服务器之后才正常。

查看“事件查看器”中出现一个Zend Optimizer错误,而且这个错误都是每次启动服务器之后产生的:

事件类型: 错误
事件来源: Zend Optimizer
事件种类: 无
事件 ID: 487
日期: 2008-2-28
事件: 9:22:15
用户: N/A
计算机: XXX
描述:
事件 ID ( 487 )的描述(在资源( Zend Optimizer )中)无法找到。本地计算机可能没有必要的注册信息或消息 DLL 文件来从远程计算机显示消息。您可能可以使用 /AUXSOURCE= 标识来检索词描述;查看帮助和支持以了解详细信息。下列信息是事件的一部分: Unable to view file mapping, 试图访问无效的地址。

查阅了一下网上的资料,其实只有一个版本,具体内容可以看下面的参考资料。我这里结合自己的解决方法总结一下:

首先如果你的PHP使用了eAccelerator则将其注释掉就可以了,这是因为Zend Optimizer同eAccelerator相冲突。其实二者都是用于加速PHP程序的,只要使用其中的一个就可以了。

如果你的PHP没有使用eAccelerator的话则大部分是权限的问题了,这种情况在Apache+PHP中很少见,通常都是在IIS+PHP这种搭配中出现的比较多。这个时候只需要修改%SystemRoot%\Temp的权限,设置为EveryOne全部允许;然后如果该目录下没有ZendOptimizer.MemoryBase@SYSTEM文件的话就手动新建一个文本文件然后命名为ZendOptimizer.MemoryBase@SYSTEM即可。

如果还是有问题的话可以查看一下php下的ext目录中是否有php_yaz.dll和php_zip.dll两个文件,有哪一个就在php.ini将 “extension=…”前面的分号去掉。

做完上面的操作之后如果依然出现问题的话请在下面留言或给我mail,可以再继续探讨。

[后续(2008.3.4):]做完上述的操作之后依然出现上面的错误,不过错误出现的次数少了而已,最后不得已将Zend卸载掉了。现在感觉好像应该是Zend Optimizer的一个bug吧。

分类:服务器 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 1839

以SQL Server 2012 为例

110336_8w02_99943[2]

上图是部分数据库的截图, 我们执行

复制代码代码如下:

DENY VIEW any DATABASE to PUBLIC;


然后给Best库的Best用户执行

复制代码代码如下:

Alter AUTHORIZATION ON DATABASE::Best TO Best

 

H80O8P922`NXMA2FRC~60AH

资源管理器中Best用户登陆后就只能显示Best库了, 同样给Mine库的Mine用户执行相同SQL

复制代码代码如下:

Alter AUTHORIZATION ON DATABASE::Mine TO Mine

 

KM030PFB~D8GJO7R3CV%8YG

Mine用户登录后也只能显示Mine数据库了, 达到了咱的目的, 分配权限的时候记得给对应用户映射对应数据库的权限, 防止跨库操作.

分类:服务器 | 固定链接 | 评论: 1 | 引用: 0 | 查看次数: 1939

解决 MySQL 服务器进程 CPU 占用 100%

 

 MYSQL CPU 占用 100% 的现象描述

  早上帮朋友一台服务器解决了 Mysql cpu 占用 100% 的问题。稍整理了一下,将经验记录在这篇文章里。

  朋友主机(Windows 2003 + IIS + PHP + MYSQL )近来 MySQL 服务进程 (mysqld-nt.exe) CPU 占用率总为 100% 高居不下。此主机有10个左右的 database, 分别给十个网站调用。据朋友测试,导致 mysqld-nt.exe cpu 占用奇高的是网站A,一旦在 IIS 中将此网站停止服务,CPU 占用就降下来了。一启用,则马上上升。

 MYSQL CPU 占用 100% 的解决过程

  今天早上仔细检查了一下。目前此网站的七日平均日 IP 为2000,PageView 为 3万左右。网站A 用的 database 目前有39个表,记录数 60.1万条,占空间 45MB。按这个数据,MySQL 不可能占用这么高的资源。

  于是在服务器上运行命令,将 mysql 当前的环境变量输出到文件 output.txt:

d:webmysql> mysqld.exe --help >output.txt

  发现 tmp_table_size 的值是默认的 32M,于是修改 My.ini, 将 tmp_table_size 赋值到 200M:

d:webmysql> notepad c:windowsmy.ini [mysqld] tmp_table_size=200M 

  然后重启 MySQL 服务。CPU 占用有轻微下降,以前的CPU 占用波形图是 100% 一根直线,现在则在 97%~100%之间起伏。这表明调整 tmp_table_size 参数对 MYSQL 性能提升有改善作用。但问题还没有完全解决。

  于是进入 mysql 的 shell 命令行,调用 show processlist, 查看当前 mysql 使用频繁的 sql 语句:

mysql> show processlist;

  反复调用此命令,发现网站 A 的两个 SQL 语句经常在 process list 中出现,其语法如下:

Select t1.pid, t2.userid, t3.count, t1.date FROM _mydata AS t1  LEFT JOIN _myuser AS t3 ON t1.userid=t3.userid LEFT JOIN _mydata_body AS t2 ON t1.pid=t3.pid orDER BY t1.pid LIMIT 0,15

  调用 show columns 检查这三个表的结构 :

mysql> show columns from _myuser; mysql> show columns from _mydata; mysql> show columns from _mydata_body;

  终于发现了问题所在:_mydata 表,只根据 pid 建立了一个 primary key,但并没有为 userid 建立索引。而在这个 SQL 语句的第一个LEFT JOIN ON 子句中:

LEFT JOIN _myuser AS t3 ON t1.userid=t3.userid

  _mydata 的 userid 被参与了条件比较运算。于是我为给 _mydata 表根据字段 userid 建立了一个索引:

mysql> Alter TABLE `_mydata` ADD INDEX ( `userid` )

  建立此索引之后,CPU 马上降到了 80% 左右。看到找到了问题所在,于是检查另一个反复出现在 show processlist 中的 sql 语句:

Select COUNT(*) FROM _mydata AS t1, _mydata_key AS t2 Where t1.pid=t2.pid and t2.keywords = '孔雀'

  经检查 _mydata_key 表的结构,发现它只为 pid 建了了 primary key, 没有为 keywords 建立 index。_mydata_key 目前有 33 万条记录,在没有索引的情况下对33万条记录进行文本检索匹配,不耗费大量的 cpu 时间才怪。看来就是针对这个表的检索出问题了。于是同样为 _mydata_key 表根据字段 keywords 加上索引:

mysql> Alter TABLE `_mydata_key` ADD INDEX ( `keywords` )

  建立此索引之后,CPU立刻降了下来,在 50%~70%之间震荡。

  再次调用 show prosslist,网站A 的sql 调用就很少出现在结果列表中了。但发现此主机运行了几个 Discuz 的论坛程序, Discuz 论坛的好几个表也存在着这个问题。于是顺手一并解决,cpu占用再次降下来了。

 解决 MYSQL CPU 占用 100% 的经验总结

   http://www.xiaohui.com/weekly/20070307.htm

  1. 增加 tmp_table_size 值。mysql 的配置文件中,tmp_table_size 的默认大小是 32M。如果一张临时表超出该大小,MySQL产生一个 The table tbl_name is full 形式的错误,如果你做很多高级 GROUP BY 查询,增加 tmp_table_size 值。 这是 mysql 官方关于此选项的解释:
  2. tmp_table_size

    This variable determines the maximum size for a temporary table in memory. If the table becomes too large, a MYISAM table is created on disk. Try to avoid temporary tables by optimizing the queries where possible, but where this is not possible, try to ensure temporary tables are always stored in memory. Watching the processlist for queries with temporary tables that take too long to resolve can give you an early warning that tmp_table_size needs to be upped. Be aware that memory is also allocated per-thread. An example where upping this worked for more was a server where I upped this from 32MB (the default) to 64MB with immediate effect. The quicker resolution of queries resulted in less threads being active at any one time, with all-round benefits for the server, and available memory.

  3. 对 Where, JOIN, MAX(), MIN(), orDER BY 等子句中的条件判断中用到的字段,应该根据其建立索引 INDEX。索引被用来快速找出在一个列上用一特定值的行。没有索引,MySQL不得不首先以第一条记录开始并然后读完整个表直到它找出相关的行。表越大,花费时间越多。如果表对于查询的列有一个索引,MySQL能快速到达一个位置去搜寻到数据文件的中间,没有必要考虑所有数据。如果一个表有1000行,这比顺序读取至少快100倍。所有的MySQL索引(PRIMARY、UNIQUE和INDEX)在B树中存储。

     

    根据 mysql 的开发文档:

  4. 索引 index 用于

    • 快速找出匹配一个Where子句的行
    • 当执行联结(JOIN)时,从其他表检索行。
    • 对特定的索引列找出MAX()或MIN()值
    • 如果排序或分组在一个可用键的最左面前缀上进行(例如,ORDER BY key_part_1,key_part_2),排序或分组一个表。如果所有键值部分跟随DESC,键以倒序被读取。
    • 在一些情况中,一个查询能被优化来检索值,不用咨询数据文件。如果对某些表的所有使用的列是数字型的并且构成某些键的最左面前缀,为了更快,值可以从索引树被检索出来。

      假定你发出下列Select语句: 
      mysql> Select * FROM tbl_name Where col1=val1 AND col2=val2;
      如果一个多列索引存在于col1和col2上,适当的行可以直接被取出。如果分开的单行列索引存在于col1和col2上,优化器试图通过决定哪个索引将找到更少的行并来找出更具限制性的索引并且使用该索引取行。

       

  开发人员做 SQL 数据表设计的时候,一定要通盘考虑清楚。

分类:服务器 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 1927
错误提示:
Error: Can't create/write to file 'C:\WINDOWS\TEMP\#sql_738_0.MYD' (Errcode: 17)
Errno.: 1

问题分析:

查看更多...

分类:服务器 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 1760

不用备案的网站空间,免备案空间

不用备案的网站空间,开通就可以绑定域名建设网站,方便、省心,速度快,安全性高。

不用备案的网站空间购买地址: http://www.vradmin.com/Host.asp?id=15

查看更多...

分类:服务器 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 1851