我在 php cron 作业中遇到内存错误:
Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 71 bytes) in /opt/matrix/core/lib/DAL/DAL.inc on line 830
crontab适用的部分有:
$ sudo crontab -u www-data -l
MAILTO=root
# m h dom mon dow command
*/15 * * * * php /opt/matrix/core/cron/run.php /opt/matrix
Run Code Online (Sandbox Code Playgroud)
我在 Debian Squeeze 上运行,完全更新。
显而易见的解决方案是 cli 的内存限制较低(64MB)。但是,/etc/php5/cli/php.ini 说它是无限的。
$ cat /etc/php5/cli/php.ini | grep memory_limit
memory_limit = -1
Run Code Online (Sandbox Code Playgroud)
我在某处读到它对于不同的用户可能会有所不同,并且由于该进程以 www-data 的形式运行,因此我运行了:
$ sudo -u www-data -s
$ php -i | grep memory_limit
memory_limit => -1 …Run Code Online (Sandbox Code Playgroud) 我正在发布的 .deb 包期望它可以调用 lsb_release。一位使用 Debian 6.0.5 的客户表示 lsb_release 命令(甚至在终端中)会产生命令未找到错误。这是标准还是他的 Debian 构建有问题?
我偶尔会遇到语言环境错误,我尝试运行 dpkg-reconfigure locales 来解决这个问题。这是输出:
:~$ sudo dpkg-reconfigure locales
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_CTYPE = "UTF-8",
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
/usr/bin/locale: Cannot set LC_CTYPE to default locale: …Run Code Online (Sandbox Code Playgroud) 在 Debian 6.0.6 系统中,有 74 个 2TB Toshiba DT01ABA200 驱动器。这些驱动器被标识为运行固件版本 MZ4OAAB0 的 Hitachi HDS5C3020BLE630 驱动器。64 个驱动器通过 HP SAS 扩展卡连接到 LSI 2008 SAS 控制器,另外 5 个驱动器直接连接到主板,4 个驱动器连接到基于 Sil 的 PCI 控制器,最后一个驱动器仅通电且未连接数据线。控制器 LSI 和 Sil 卡的板载 BIOS 均已禁用,并且 mpt2sas 和 sata_sil 模块已从 Linux debian 2.6.32-5-amd64 #1 SMP Sun Sep 23 10:07:46 UTC 2012 x86_64 GNU/Linux 内核中删除。mpt2sas 模块在启动后使用 /etc/rc.local 中的 modprobe 命令加载。这 74 个驱动器没有分区,没有格式化,也没有挂载。
系统消耗:
在带有 Debian 6 的raid 10 和 4xSSD 的新 Xeon 55XX 服务器中,我在服务器建成后的两周内经历了 2 次随机关闭。在关闭之前查看带宽日志并没有表明任何异常。服务器负载通常很低(大约1)并且它位于很远的地方。服务器宕机时似乎没有停电。
我知道我查看了 /var/log 但不确定我应该调查哪些日志以及我应该寻找什么。所以感谢你的提示。
目前,我的 PHP 是 5.3.3,我该如何升级它?另外我如何升级任何东西?例如,如果我也想升级 phpMyAdmin?
注意:请阅读本文中点附近以“EDIT”开头的更新信息 - 此问题的环境和背景已更改
我在这里安装了一个沼泽标准的 Debian 6.0,我决定将其转移到 Debian 测试存储库。我通过在我的 sources.list 中交换对 Squeeze 存储库的引用来使用测试存储库来做到这一点。
安装软件包并重新启动后,尝试向另一个用户执行 su - 时出现以下错误:
root@skaia:~# su joebloggs -
bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash: no job control in this shell
Run Code Online (Sandbox Code Playgroud)
如果我省略 -,则不会发生这种情况。
请注意,用户可以正确地成为 root,这似乎只有在从 root 切换到其他人并使用 - 获取该用户的环境时才会发生。
谷歌在这里基本没用。我能找到的唯一的东西是 2011 年关于sux包的参考文献,这些参考文献似乎同时得到了修复。
这看起来和闻起来很像升级错误,可以通过以正确的方式调整正确的包来修复。我只是不知道从哪里开始 - 除此之外,我的系统完全正常并按预期工作。
编辑
如上所述,这现在发生在我的 Debian稳定机器上。这次没有升级或任何东西,只是直接稳定。
是的,一年后。仍然不知道问题是什么。
这是现在的样子(变化不大):
bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash: no job control in this shell
terraria@skaianet:~$ …Run Code Online (Sandbox Code Playgroud) 首先让我承认我犯了错误,并且我对这个 RAID 上的大部分但不是所有数据都有备份。我仍然有希望恢复其余数据。我没有钱将驱动器带到恢复专家公司。
错误 #0,没有 100% 备份。我知道。
我有一个mdadm4x3TB的RAID5 系统。驱动器 /dev/sd[be],都只有一个分区/dev/sd[b-e]1。我知道在非常大的驱动器上使用 RAID5 是有风险的,但我还是这样做了。
RAID 在两个驱动器发生故障后降级。一个驱动器 [/dev/sdc] 真的消失了,另一个驱动器 [/dev/sde] 在重新启动后重新启动,但没有自动重新添加到 RAID。所以我只剩下一个只有 2 个活动驱动器 [/dev/sdb 和 /dev/sdd] 的 4 设备 RAID。
错误 #1,不使用驱动器的 dd 副本来恢复 RAID。我没有驱动器或时间。错误 #2,没有备份超级块和mdadm -E剩余驱动器。
我在降级模式下重新组装了 RAID
mdadm --assemble --force /dev/md0, using /dev/sd[bde]1.
Run Code Online (Sandbox Code Playgroud)
然后我可以访问我的数据。我换/dev/sdc了一个备用;空的; 相同的驱动器。
我/dev/sdc1从 RAID 中删除了旧的
mdadm --fail /dev/md0 /dev/sdc1
Run Code Online (Sandbox Code Playgroud)
错误 #3,在更换驱动器之前没有这样做
然后我将新分区/dev/sdc并将其添加到 RAID。
mdadm --add /dev/md0 /dev/sdc1 …Run Code Online (Sandbox Code Playgroud) 我正在运行使用 SSL 服务进行通信的 OpenLDAP 2.4 服务器。它适用于查找。
我正在尝试添加镜像模式复制。
所以这是我正在执行的命令:
ldapmodify -D "cn=myuser,dc=mydomain,dc=com" -H ldaps://myloadbalancer -W -f /etc/ldap/ldif/server_id.ldif
Run Code Online (Sandbox Code Playgroud)
这是我的 server_id.ldif:
dn: cn=config
changetype: modify
replace: olcServerID
olcServerID: 1 myserver1
olcServerID: 2 myserver2
Run Code Online (Sandbox Code Playgroud)
这是我在 slapd.d 文本文件树中的 cn\=config.ldif:
dn: cn=config
objectClass: olcGlobal
cn: config
olcArgsFile: /var/run/slapd/slapd.args
olcPidFile: /var/run/slapd/slapd.pid
olcToolThreads: 1
structuralObjectClass: olcGlobal
entryUUID: ff9689de-c61d-1031-880b-c3eb45d66183
creatorsName: cn=config
createTimestamp: 20121118224947Z
olcLogLevel: stats
olcTLSCertificateFile: /etc/ldap/certs/ldapscert.pem
olcTLSCertificateKeyFile: /etc/ldap/certs/ldapskey.pem
olcTLSCACertificateFile: /etc/ldap/certs/ldapscert.pem
olcTLSVerifyClient: never
entryCSN: 20121119022009.770692Z#000000#000#000000
modifiersName: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
modifyTimestamp: 20121119022009Z
Run Code Online (Sandbox Code Playgroud)
但不幸的是我得到了这个:
Enter LDAP Password:
modifying entry "cn=config"
ldap_modify: Insufficient access …Run Code Online (Sandbox Code Playgroud) 我想使用 强制日志文件轮换logrotate -f /var/log/syslog,但它只是返回音调:
error: syslog:1 unknown option 'May' -- ignoring line
error: syslog:1 unexpected text
Run Code Online (Sandbox Code Playgroud)
我知道在这个系统上 rsyslogd 正在运行。如何旋转/var/log/syslog?我想要它是空的。