Até que alguém possa me dar uma solução limpa, é isso que eu tenho, e é uma droga. Eu não vou aceitar isso como a resposta à minha pergunta, mas aqui está (gags). Pelo menos funciona.
Histórico
Parece que as alterações em / etc / security / limits. * nunca afetam os serviços, mas sim as coisas sendo executadas no shell. Então, isso faz com que minhas alterações em / etc / security / limits. * sejam completamente sem sentido. ( insira o cussing aqui ). Eu já deletei meu /etc/security/limits.d/myapplication.conf .
Alterando os limites de tamanho de pilha para postgres
Esta é uma solução de lixo. Eu odeio isso.
Eu editei meu "/usr/share/postgresql-common/init.d-functions", especificamente a função start () , para aparecer como:
...
# start all clusters of version $1
# output according to Debian Policy for init scripts
start() {
ulimit -s 131072 #JTS: To avoid Issue #XYZ
# create socket directory
if [ -d /var/run/postgresql ]; then
chmod 2775 /var/run/postgresql
else
...
Obviamente, adicionei a linha ulimit. É nojento para mim modificar esse arquivo porque espero que ele seja constantemente alterado por atualizações. Pelo menos eu tenho uma regra Ansible para impor que existe.
Minha solução Ansible
Aqui está a tarefa Ansible que criei para impor essa alteração de configuração:
- blockinfile:
dest: /usr/share/postgresql-common/init.d-functions
block: |
ulimit -s 131072
backup: yes
insertafter: '^start\(\) \{'
state: present
Esta tarefa Ansible resulta na função com esta aparência:
...
# start all clusters of version $1
# output according to Debian Policy for init scripts
start() {
# BEGIN ANSIBLE MANAGED BLOCK
ulimit -s 131072
# END ANSIBLE MANAGED BLOCK
# create socket directory
if [ -d /var/run/postgresql ]; then
...
Nota: Serviços Upstart Ignorar / etc / security / limits
Parece que / etc / security / limits. * é ignorado pelo Upstart, que o Ubuntu 14.04 usa. Meu serviço de aplicativo realmente usa upstart e pode-se inserir uma linha para o upstart que se parece com:
limit stack <softlimit> <hardlimit>
O Ubuntu mudou para o systemd depois de 14.04, então este arriscado tid-bit irá se tornar irrelevante.
Isso não é relevante para minha pergunta, porque em 14.04, postgresql não é gerenciado por upstart.