1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one 3 * or more contributor license agreements. See the NOTICE file 4 * distributed with this work for additional information 5 * regarding copyright ownership. The ASF licenses this file 6 * to you under the Apache License, Version 2.0 (the 7 * "License"); you may not use this file except in compliance 8 * with the License. You may obtain a copy of the License at 9 * 10 * http://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, 13 * software distributed under the License is distributed on an 14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 * KIND, either express or implied. See the License for the 16 * specific language governing permissions and limitations 17 * under the License. 18 */ 19 20 #include <thrift/thrift-config.h> 21 22 #ifdef HAVE_SYS_TIME_H 23 #include <sys/time.h> 24 #endif 25 #ifdef HAVE_SYS_RESOURCE_H 26 #include <sys/resource.h> 27 #endif 28 29 #ifdef HAVE_UNISTD_H 30 #include <unistd.h> 31 #endif 32 33 namespace apache { 34 namespace thrift { 35 namespace server { 36 37 #ifdef HAVE_SYS_RESOURCE_H increase_max_fds(int max_fds=(1<<24))38int increase_max_fds(int max_fds = (1 << 24)) { 39 struct rlimit fdmaxrl; 40 41 for (fdmaxrl.rlim_cur = max_fds, fdmaxrl.rlim_max = max_fds; 42 max_fds && (setrlimit(RLIMIT_NOFILE, &fdmaxrl) < 0); 43 fdmaxrl.rlim_cur = max_fds, fdmaxrl.rlim_max = max_fds) { 44 max_fds /= 2; 45 } 46 47 return static_cast<int>(fdmaxrl.rlim_cur); 48 } 49 #endif 50 } 51 } 52 } // apache::thrift::server 53