Sun Microsystems公司于前不久发布了它的新一代的旗帜性软件产品线:适用于SPARC和Intel两种计算机的新的Solaris 7 软件环境。Solaris 7产品系列包括基本的
Solaris 7操作环境和3个模块化软件扩展版本(Solaris Easy Access Server,Solaris
Enterprise Server,Solaris ISP Server)--每个扩展版本都在基本的Solaris 7操作
环境上运行。新的产品线主要具有以下特点:
1. 处理数据的能力大为增加,不仅数据量没有什么限制,计算的复杂性也有突破,
为新一级的应用软件敞开了大门。
2. 大型机的能力,而价格只有大型机的几分之一。
3. 具有对PC机的完全互操作性,可使客户连接和管理他们的Windows NT环境与
Solaris环境一样。
4. 具有PC机简易管理的新风格,大大简化了安装与管理。
不仅如此,该版本的Solaris还具有强大的软件支持,其中包括了Sun Visual WorkShop
C++ 5.0软件和Sun Performance WorkShop Fortran 5.0软件,并为C/C++和
Fortran的开发商开发企业级应用软件提供了具有竞争性的优势。Solaris 7具有全新中
文版本,中文版本不仅具有多种中文输入方式、灵活地支持中文的输出,同时方便地接
收中文邮件和进行字体转换弥补了过去Solaris在这方面的不足。Solaris 7与 Windows
无缝连接,从而使用户可以进行简单明了的操作和管理。在Solaris 7中,Sun公司着重考
虑了健壮和安全的问题,提供了一系列的现代化的安全机制,同时修补了安全漏洞和系统
BUG,使得Solaris 7具有相当可靠的安全性和健壮性,将用户的风险降到了最低的限度。
综上所述,Solaris 7是适用于企业网的操作系统。
一、相关站点
http://www.sunfreeware.com/
2.solaris 咨询站
http://www.ibiblio.org/pub/packages/solaris/sparc/
3.solaris中文手册:
http://docs.sun.com/ab2?Ab2Lang=zh&Ab2Enc=gb2312
4.UNIX depot
http://www.cise.ufl.edu/depot/
5.solaris中心
http://www.solariscentral.org/
二、重新配置系统核心
举例: Oracle 8 for solaris 2.6 安装的安装需要增加Shared Memory Segments;
修改/etc/system文件,在文件后加上
set shmsys:shminfo_shmmax=4294967295
set shmsys:shminfo_shmmin=1
set shmsys:shminfo_shmmni=100
set shmsys:shminfo_shmseg=15
set semsys:seminfo_semmns=200
set semsys:seminfo_semmni=70
set ulimit=3000000
比如innd用的文件数目比较多,需要设置:
set rlim_fd_max=4096
set rlim_fd_cur=1024
如何看系统默认值;
先看系统默认值,超级用户可以用-k参数来看核心的各个参数,如果指定-w参数,则可
以
adb - general-purpose debugger
可以看现在的值是什么?
/usr/bin/adb –kw
physmem 1f8d9
maxusers/D
maxusers:
maxusers: 504
maxusers/W 200
maxusers: 0x1f8 = 0x200
(1)IO相关的设置
最经常需要改变的是文件描述符数因为SOCKET API处理INTERNET连接使用文件描述符,
set rlim_fd_max = 8192
set rlim_fd_cur = 4096
Please, before you start, make a backup copy of your initial /etc/system.
The backup should be located on your root filesystem. Thus, if some
parameters fail, you can always supply the alternative, original system
file on the boot prompt. The following shows two typically entered
parameters:
* these are the defaults of Solaris < 8
set rlim_fd_max=1024
set rlim_fd_cur=64
rlim_fd_cur
这个参数定义了一个进程可以打开文件描述符的“软”限制,该数目由当前运行的SHELL
决定;ulimit –Sn,还可以通过setrlimit()函数来修改这个参数;不需要超级用户权
限;
The predicate rlim_fd_cur <= rlim_fd_max must be fulfilled.
rlim_fd_max
default 1024, recommended >=4096
这个参数决定了一个进程可以打开文件描述符的“硬”限制;如果想改变该限制,必须
有超级用户的权限;
对于大多数SERVER,不管使用TCP还是UDP进行通讯,最大描述符数是每个用户进程的最
重要的参数;文件描述符决定了同时可以连接的数目;
ulimit -Hn
You should consider a value of at least 2 * tcp_conn_req_max and you
should provide at least 2 * rlim_fd_cur. The predicate rlim_fd_cur <=
rlim_fd_max must be fulfilled.
(2)进程相关的设置
maxusers
default 249 ~= Megs RAM (Ultra-2/2 CPUs/256 MB), min 8, max 2048, no
recommendations
最大用户定义系统可以支持的最大用户数,当核心生成的过程中,有一些表的大小就是
由这个参数决定的。这个值的大小在当前SOALRIS版本中决定于内存的兆数目;有一些参
数是由MAXUSER来决定的,
_ The maximum number of processes on the system
_ The number of quota structures held in the system
_ The size of the directory name lookup cache(DNLC)
默认值是系统内存兆数,小于2048;
如果大于1024,必须在/etc/system中指定,如果大于4096,它的值为4096;
当系统出现用户进程生成(FORK)缓慢时,系统报信息;
out of processes
默认值比较大有以下情况:
数据库系统使用较大内存,但相对少的进程,减少MAXUSERS的值,可以节省系统内存;
PIDMAX
这个参数指定系统最大可能进程ID; 默认值为30000,范围为266到999999;只在启动
时候进行设置;
max_nprocs
系统最大进程数,包含系统进程和用户进程;默认值为为10+(16*MAXUSERS)
该值范围为266到MAXPID;
基于Intel i386体系结构的Linux操作系统中,已经提供了这样的多进程运行的支持。
通过合理的选择进程调度算法,可以获得比较好的平均相应时间和较高的系统性能。但
是,美中不足的是,在目前的2.2.x版本的Linux内核中,存在对最大进程数的限制。也
就是说,在目前的Linux系统中,最多只能有4090个用户进程同时存在。对于一般的桌面
应用,这个数目是绰绰有余。但是,对于企业级的服务器应用来说,则是不够的。
设想一个典型的Web服务器软件,它们一般都采用多进程/线程的结构。每当接到一个连
接请求,就产生一个子进程/线程来处理。显然,对于一个重负载的服务器来说,同时有
成千上万个连接是很常见的。而这时,采用kernel 2.2.x的系统就不能胜任了。因此,
可以说正是因为存在这个最大进程数的限制,使得Linux不能胜任企业级服务器操作系统
的工作。事实上,目前这个级别的操作系统一般都是较为成熟,并且没有上述限制的
Solaris、AIX、HP-UX等系统。
maxuprc
一个用户可以生成的最大用户进程数;
默认值为MAX_NPROCS-RESERVED_PROCS
STREAM
nstrpush
默认值为9,这个参数定义了允许有多少个STREAM 模块加载在系统核心中,我猜想这个
参数是指相对于一个用户或一个进程,通常不用修改该参数;
strmsgsz
默认值为 65536, 单个系统调用可以传给一个STREAM设备信息的数据部分的最大字节数
;任何write(2)超过这个大小限制会被分为多个信息;
范围为:0到262144 bytes
当出现putmsg(2)系统调用返回ERANGE时,需要修改该参数;
strctlsz
默认值为 65536, 单个系统调用可以传给一个STREAM设备信息的控制部分的最大字节数
;范围:0-MAXINT BYTES;
General Kernel Variables
noexec_user_stack
Warning: This option might crash some of your application software, and
endanger your system's stability!
By default, the Solaris 32 bit application stack memory areas are set
with permissions to read, write and execute, as specified in the SPARC
and Intel ABI. Though many hacks prefer to modify the program counter
saved during a subroutine call, a program snippet in the stack area can
be used to gain root access to a system.
If the variable is set to a non-zero value, the stack defaults to read
and write, but not executable permissions. Most programs, but not all,
will function correctly, if the default stack permissions exclude
executable rights. Attempts to execute code on the stack will kill the
process with a SIGSEGV signal and log a message in kern:notice. Program
which rely on an executable stack must use the mprotect(2) function to
explicitly mark executable memory areas.
Refer to the System Administration Guide for more information on this
topic. Admins which don't want the report about executable stack can set
the noexec_user_stack_log variable explicitly to 0.
Also note that the 64 bit V9 ABI defaults to stacks without execute
permissions.
TCP/IP参数设置
TCP/IP参数可以由ndd工具来设置,
Ndd命令能容易的在不重新配置系统内核和重起系统的情况下,修改核心和TCP/IP的设备
的一些参数。使用如下命令可看到相应的帮助。
#ndd /dev/arp \?
? (read only)
arp_cache_report (read only)
arp_debug (read and write)
arp_cleanup_interval (read and write)
# ndd /dev/icmp \?
? (read only)
icmp_wroff_extra (read and write)
icmp_def_ttl (read and write)
icmp_bsd_compat (read and write)
icmp_xmit_hiwat (read and write)
icmp_xmit_lowat (read and write)
icmp_recv_hiwat (read and write)
icmp_max_buf (read and write)
icmp_status (read only)
#ndd /dev/ip \?
? (read only)
ip_forwarding (read and write)
ip_respond_to_address_mask_broadcast(read and write)
ip_respond_to_echo_broadcast (read and write)
ip_respond_to_timestamp (read and write)
ip_respond_to_timestamp_broadcast(read and write)
ip_send_redirects (read and write)
ip_forward_directed_broadcasts(read and write)
ip_debug (read and write)
ip_mrtdebug (read and write)
ip_ire_cleanup_interval (read and write)
ip_ire_flush_interval (read and write)
ip_ire_redirect_interval (read and write)
ip_def_ttl (read and write)
ip_forward_src_routed (read and write)
ip_wroff_extra (read and write)
ip_ire_pathmtu_interval (read and write)
ip_icmp_return_data_bytes (read and write)
ip_send_source_quench (read and write)
ip_path_mtu_discovery (read and write)
ip_ignore_delete_time (read and write)
ip_ignore_redirect (read and write)
ip_output_queue (read and write)
ip_broadcast_ttl (read and write)
ip_icmp_err_interval (read and write)
ip_reass_queue_bytes (read and write)
ip_strict_dst_multihoming (read and write)
ip_addrs_per_if (read and write)
ip_ill_status (read only)
ip_ipif_status (read only)
ip_ire_status (read only)
ip_ipc_status (read only)
ip_rput_pullups (read and write)
ip_enable_group_ifs (read and write)
# ndd /dev/tcp \?
? (read only)
tcp_time_wait_interval (read and write)
tcp_conn_req_max_q (read and write)
tcp_conn_req_max_q0 (read and write)
tcp_conn_req_min (read and write)
tcp_conn_grace_period (read and write)
tcp_cwnd_max (read and write)
tcp_debug (read and write)
tcp_smallest_nonpriv_port (read and write)
tcp_ip_abort_cinterval (read and write)
tcp_ip_abort_linterval (read an